| 
					
				 | 
			
			
				@@ -54,6 +54,7 @@ func (c StockTemplateController) StockTemplateIn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockRefundIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := s.StockTemplateIn(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.Error(500, err, err.Error()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,6 +81,7 @@ func (c StockTemplateController) StockTemplateInScanCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := s.StockTemplateInScanCode(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.Error(500, err, err.Error()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -158,6 +160,88 @@ func (c StockTemplateController) BatchStockTemplateIn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.BatchStockTemplateIn(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(nil, "入库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockTemplateRefundIn 退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateInInsertReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/in [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockTemplateRefundIn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.StockTemplateInInsertReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockRefundIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.StockTemplateIn(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(reqData.GetId(), "入库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockTemplateRefundInScanCode 扫码退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 扫码入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 扫码入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateInInsertReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/in [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockTemplateRefundInScanCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.BatchStockTemplateInInsertReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockRefundIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.StockTemplateInScanCode(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(nil, "扫码退货入库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// BatchStockTemplateRefundIn 批量退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 批量退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 批量退货入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.BatchStockTemplateInInsertReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/in [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) BatchStockTemplateRefundIn() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.BatchStockTemplateInInsertReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockRefundIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := s.BatchStockTemplateIn(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.Error(500, err, err.Error()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -184,6 +268,7 @@ func (c StockTemplateController) StockTemplateOut() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := s.StockTemplateOut(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.Error(500, err, err.Error()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -210,6 +295,7 @@ func (c StockTemplateController) StockTemplateOutScanCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := s.StockTemplateOutScanCode(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.Error(500, err, err.Error()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -288,6 +374,7 @@ func (c StockTemplateController) BatchStockTemplateOut() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.State = models.StateStockOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	err := s.BatchStockTemplateOut(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		c.Error(500, err, err.Error()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -296,6 +383,99 @@ func (c StockTemplateController) BatchStockTemplateOut() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c.OK(nil, "出库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockTemplateRefundOut 退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateOutInsertReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/out [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockTemplateRefundOut() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.StockTemplateOutInsertReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if reqData.State != models.StateStockRefundOut && reqData.State != models.StateStockScrapOut { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err := errors.New("出库状态错误") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.StockTemplateOut(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(reqData.GetId(), "退货(报废)出库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockTemplateOutScanRefundCode 扫码退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 扫码退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 扫码退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateOutInsertReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/out [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockTemplateRefundOutScanCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.BatchStockTemplateOutInsertReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if reqData.State != models.StateStockRefundOut && reqData.State != models.StateStockScrapOut { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err := errors.New("出库状态错误") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.StockTemplateOutScanCode(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(nil, "扫码退货(报废)出库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// BatchStockTemplateRefundOut 批量退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 批量退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 批量退货/报废出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateOutInsertReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Response "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/out [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) BatchStockTemplateRefundOut() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.BatchStockTemplateOutInsertReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(beegouser.GetDeptId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if reqData.State != models.StateStockRefundOut && reqData.State != models.StateStockScrapOut { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err := errors.New("出库状态错误") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := s.BatchStockTemplateOut(&reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(nil, "退货(报废)出库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // StockTemplateInList 入库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Summary 入库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Description 入库列表 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -353,7 +533,7 @@ func (c StockTemplateController) StockTemplateOutList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Param body body dto.StockTemplateInventoryPageReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Router /stock/inventory/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer— 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (c StockTemplateController) StockTemplateInventoryList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reqData := dto.StockTemplateInventoryPageReq{} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -383,7 +563,7 @@ func (c StockTemplateController) StockTemplateInventoryExcel(reqData dto.StockTe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	medicineInfo, err := s.GetMedicineInfo(deptId, map[string]interface{}{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	medicineInfo, _, err := s.GetMedicineInfo(deptId, map[string]interface{}{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		"product_id":    reqData.ProductID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		"enterprise_id": reqData.EnterpriseID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		"spec_id":       reqData.SpecId, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -558,7 +738,7 @@ func (c StockTemplateController) StockTemplateInventoryPdf(reqData dto.StockTemp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	medicineInfo, err := s.GetMedicineInfo(deptId, map[string]interface{}{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	medicineInfo, _, err := s.GetMedicineInfo(deptId, map[string]interface{}{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		"product_id":    reqData.ProductID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		"enterprise_id": reqData.EnterpriseID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		"spec_id":       reqData.SpecId, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1621,7 +1801,7 @@ func (c StockTemplateController) TransportRecordWord(reqData models.TransportRec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	run.AddText("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	run.AddText("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1636,7 +1816,7 @@ func (c StockTemplateController) TransportRecordWord(reqData models.TransportRec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	run.AddText("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	run.AddText("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.AddText("________________________________________________________________") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1652,7 +1832,7 @@ func (c StockTemplateController) TransportRecordWord(reqData models.TransportRec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	run.AddText("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	run.AddText("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1667,7 +1847,7 @@ func (c StockTemplateController) TransportRecordWord(reqData models.TransportRec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	run.AddText("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	run.AddText("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.AddText("________________________________________________________________") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1677,7 +1857,7 @@ func (c StockTemplateController) TransportRecordWord(reqData models.TransportRec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run = para.AddRun() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetFontFamily("宋体") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	run.Properties().SetSize(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	run.AddText("填表说明:本表供疫苗配送企业、疾病预防控制机构、接种单位疫苗运输时填写;出入库单号为单位编码+年月日+2位流水号;运输超过6小时需记录途中温度,间隔不超过6小时;使用无自动温度显示的冰排保冷设备时,只在启运和达到时填写冰排状态(冻结、冰水混合物、完全融化)。") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	run.AddText("填表说明:本表供冷链配送企业、疾病预防控制机构、接种单位冷链运输时填写;出入库单号为单位编码+年月日+2位流水号;运输超过6小时需记录途中温度,间隔不超过6小时;使用无自动温度显示的冰排保冷设备时,只在启运和达到时填写冰排状态(冻结、冰水混合物、完全融化)。") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	doc.BodySection().SetFooter(ftr, wml.ST_HdrFtrDefault) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	filename := "运输记录表" + time.Now().Format("20060102150405") + ".docx" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1758,9 +1938,9 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		temp = append(temp, utils.ToString(row[models.FieldApprovalNumber])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		temp = append(temp, utils.ToString(row[models.FieldQualificationNumber])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		temp = append(temp, spec) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		temp = append(temp, utils.ToDate(row[models.FieldProducedDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldProducedDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		temp = append(temp, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		temp = append(temp, utils.ToDate(row[models.FieldExpiryDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldExpiryDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		temp = append(temp, fmt.Sprintf("%d", utils.ToInt(row["quantity"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		temp = append(temp, utils.ToString(row[models.FieldUnitName])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		rows = append(rows, temp) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1768,7 +1948,6 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 获取药品信息图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		img, err := imgSvc.Get(deptId, rootId, product, enterprise, spec, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if err == nil && img.Img != "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			log.Println("==============", img.Img) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imgList = append(imgList, img.Img) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1797,7 +1976,7 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	imgPath2 := "ofile/img/" + code + ".jpg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	png2j.Con2jpg(imgPath, imgPath2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Image(imgPath2, 20, 35, nil) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Image(imgPath2, -5, 35, &gopdf.Rect{W: 175, H: 30}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	titleStr := "表3-4 运输记录表" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetFont("simsun", "", 22) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1971,17 +2150,17 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Text("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	txtWd, _ := pdf.MeasureTextWidth("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ := pdf.MeasureTextWidth("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetLineWidth(0.8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.Text(beegouser.GetDeptName(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Line(57, y+3, 207, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(60, y+3, 207, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetXY(300, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Text("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	txtWd, _ = pdf.MeasureTextWidth("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Line(345, y+3, 495, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(348, y+3, 495, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	y += 25 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1991,16 +2170,16 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Text("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	txtWd, _ = pdf.MeasureTextWidth("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.Text(reqData.ReceivingUnit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Line(57, y+3, 207, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(60, y+3, 207, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetXY(300, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Text("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	txtWd, _ = pdf.MeasureTextWidth("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	pdf.Line(345, y+3, 495, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(348, y+3, 495, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	y += 20 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2010,7 +2189,7 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.SetCharSpacing(0.5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	txt := "填表说明:本表供疫苗配送企业、疾病预防控制机构、接种单位疫苗运输时填写;出入库单号为单位编码+年月日+2位流水号;运输超过6小时需记录途中温度,间隔不超过6小时;使用无自动温度显示的冰排保冷设备时,只在启运和达到时填写冰排状态(冻结、冰水混合物、完全融化)。" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txt := "填表说明:本表供冷链配送企业、疾病预防控制机构、接种单位冷链运输时填写;出入库单号为单位编码+年月日+2位流水号;运输超过6小时需记录途中温度,间隔不超过6小时;使用无自动温度显示的冰排保冷设备时,只在启运和达到时填写冰排状态(冻结、冰水混合物、完全融化)。" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	pdf.MultiCell(&gopdf.Rect{W: 555, H: 50}, txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//imgList = append(imgList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//	"https://godownoss.coldbaozhida.com/UpImage/17115067977062dc7f-0354-4e70-aefe-3423338b44be.jpg", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2119,6 +2298,32 @@ func (c StockTemplateController) TransportRecordExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TransportRecordExport 运输记录表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 收发登记表word 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 收发登记表word 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.TransportRecordWordReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/inventory/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) TransportRecordExportList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := models.TransportRecord{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, err := s.StockTemplateTransportRecordWord(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.PageOK(list, 0, 0, 0, "查询成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // StockUnitList 获取收货单位,发货单位,收发单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Summary 获取收货单位,发货单位,收发单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // @Description 获取收货单位,发货单位,收发单位 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2376,7 +2581,7 @@ func (c StockTemplateController) StockTemplateInScanBarCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c.OK(nil, "扫码出库成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (c StockTemplateController) GetBarCodeInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) GetTransportRecordBarCodeInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	barcodeSvc := services.Barcode{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2405,3 +2610,1151 @@ func (c StockTemplateController) GetBarCodeInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c.OK(list, "查询成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockRefundOutTransportRecordPdf(reqData models.TransportRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgSvc := services.MedicineImg{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	barcodeServ := services.Barcode{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	p := actions.GetPermissionFromContext(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rootId, err := imgSvc.GetRootID((*context2.Context)(c.Ctx), p.DeptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.BadRequest, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, err := s.StockRefundOutTransportRecordPdf(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptID = deptId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptName = beegouser.GetDeptName(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	code, err := barcodeServ.Insert(reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err = errors.New("生成条码失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cs, _ := code128.Encode(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 创建一个要输出数据的文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgPath := "ofile/img/" + code + ".png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file, _ := os.Create(imgPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer file.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 设置图片像素大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	qrCode, _ := barcode.Scale(cs, 205, 50) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 将code128的条形码编码为png图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	png.Encode(file, qrCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols := []float64{83, 50, 55, 72, 72, 50, 66, 50, 27, 30} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	header := []string{"品种", "生产企业", "批准文号", "批签发合格编号", "规格(剂/支或粒)", "生产日期", "批号", "失效日期", "数量", "单位"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows := [][]string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgList := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		product := utils.ToString(row[models.FieldProductName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		enterprise := utils.ToString(row[models.FieldEnterpriseName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		spec := utils.ToString(row[models.FieldSpecName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		batchNumber := utils.ToString(row[models.FieldBatchNumber]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, product) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%s", enterprise)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldApprovalNumber])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldQualificationNumber])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, spec) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldProducedDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldExpiryDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%d", utils.ToInt(row["quantity"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldUnitName])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		rows = append(rows, temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取药品信息图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		img, err := imgSvc.Get(deptId, rootId, product, enterprise, spec, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err == nil && img.Img != "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			log.Println("==============", img.Img) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imgList = append(imgList, img.Img) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf := &gopdf.GoPdf{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginTop(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginBottom(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddTTFFont("simsun", "static/fonts/MiSans-Medium.ttf") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMargins(2, 5, 5, 5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.SetX(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.SetY(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text("[退货出库]") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(420) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgPath2 := "ofile/img/" + code + ".jpg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	png2j.Con2jpg(imgPath, imgPath2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Image(imgPath2, 390, 15, &gopdf.Rect{W: 200, H: 35}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	titleStr := "退货出库运输温度记录表" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 22) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	textw, _ := pdf.MeasureTextWidth(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX((595 / 2) - (textw / 2) - 50) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y := 20., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 35 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("出/入库日期:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ := pdf.MeasureTextWidth("出/入库日期:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(reqData.Date) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd, y+3, curx+txtWd+110, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 230 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("出/入库单号:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("出/入库单号:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd, y+3, curx+txtWd+130, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第二行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 20., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("运输工具:(1)冷藏车") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("运输工具:(1)冷藏车") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text(reqData.Date) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd, y+3, curx+txtWd+110, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 230 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("(2)运输车") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("(2)运输车") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd+2, y+3, curx+txtWd+130, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 410 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("(3)其他") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("(3)其他") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd+2, y+3, curx+txtWd+130, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第三行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 20., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("冷藏方式:(1)冷藏车") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("运输工具:(1)冷藏车") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text(reqData.Date) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd, y+3, curx+txtWd+110, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 230 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("(2)冷藏箱") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("(2)冷藏箱") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd, y+3, curx+txtWd+130, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 410 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("(3)其他") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("(3)其他") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(curx+txtWd, y+3, curx+txtWd+130, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("运输情况:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	h := 20.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x := curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i := 0; i < len(header); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, header[i], 9, x, y, cols[i], h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range rows { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height := h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lineTexts, _ := pdf.SplitText(txt, cols[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//lineHt := h * float64(len(lineTexts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if len(lineTexts) > 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineTexts, _ = pdf.SplitText(txt, cols[i]-4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineHt := h * float64(len(lineTexts)) * 0.6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if lineHt > height { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height = lineHt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width := cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, height, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetNewY(y+height, height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("运输温度记录:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	header2 := []string{"项目", "日期/时间", "储存温度", "冰排状态", "环境温度"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2 := []float64{55, 210, 105, 94, 91} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	h = 35.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, h) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i := 0; i < len(header2); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, header2[i], 9, x, y, cols2[i], h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += cols2[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, h) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	row2 := [][]string{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{"启运", "______年___月___日___时___分", "________℃", "", "________℃"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{"途中", "______年___月___日___时___分", "________℃", "————", "________℃"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{"到达", "______年___月___日___时___分", "________℃", "", "________℃"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for j, row := range row2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetTextColor(0, 0, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height := h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if j == 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height = height * 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width := cols2[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			txtWd, _ := pdf.MeasureTextWidth(txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			txtX := x + (width-txtWd)/2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pdf.SetLineWidth(0.8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pdf.SetFillColor(255, 255, 255) //setup fill color 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pdf.SetLineType("")             // 线条样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pdf.RectFromUpperLeftWithStyle(x, y, width, height, "FD") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if j == 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if i == 1 || i == 2 || i == 4 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					txtY := y + height/5*2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					pdf.SetXY(txtX, txtY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					pdf.Text(txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					txtY = y + height/5*4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					pdf.SetXY(txtX, txtY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					pdf.Text(txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					txtY := y + height/5*3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					pdf.SetXY(txtX, txtY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					pdf.Text(txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				txtY := y + height/3*2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pdf.SetXY(txtX, txtY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pdf.Text(txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetNewY(y+height, height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if pdf.GetY() < 30 || pdf.GetY() > 810 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("启运至到达行驶里程数:_________千米") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 25) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("发货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetLineWidth(0.8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(beegouser.GetDeptName(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(60, y+3, 207, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(300, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("发货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(348, y+3, 495, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 25) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("收货单位:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx+txtWd, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(reqData.ReceivingUnit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(60, y+3, 207, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(300, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txtWd, _ = pdf.MeasureTextWidth("收货人签名:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Line(348, y+3, 495, y+3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetCharSpacing(0.5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	txt := "填表说明:本表供冷链配送企业、疾病预防控制机构、接种单位冷链运输时填写;出入库单号为单位编码+年月日+2位流水号;运输超过6小时需记录途中温度,间隔不超过6小时;使用无自动温度显示的冰排保冷设备时,只在启运和达到时填写冰排状态(冻结、冰水混合物、完全融化)。" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.MultiCell(&gopdf.Rect{W: 555, H: 50}, txt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//imgList = append(imgList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	"https://godownoss.coldbaozhida.com/UpImage/17115067977062dc7f-0354-4e70-aefe-3423338b44be.jpg", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	"https://godownoss.coldbaozhida.com/UpImage/17115068019adbd486-993e-48c5-8155-c2c30265638a.jpg", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range imgList { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		urlList := strings.Split(strings.Trim(v, ","), ",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for _, url := range urlList { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pdf.AddPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imgH, errImg := utils.GetImage(url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if errImg != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				err = errors.New("获取图片失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imgWidth := float64(imgH.Bounds().Dx()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imgHeight := float64(imgH.Bounds().Dy()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			W, H := imgWidth, imgHeight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if imgWidth >= imgHeight && imgWidth > 555 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				W = 555 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				H = 555 * float64(imgHeight) / float64(imgWidth) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if imgWidth < imgHeight && imgWidth > 760 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				W = 760 * float64(imgWidth) / float64(imgHeight) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				H = 760 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if W > 555 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					H = 555 * 760 / W 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					W = 555 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if strings.Contains(url, ".png") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				err = pdf.ImageFrom(imgH, (595-W)/2, (840-H)/2, &gopdf.Rect{W: W, H: H}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					err = errors.New("写入图片失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fileName := "./ofile/" + path.Base(url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				f, _ := os.Create(fileName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				defer f.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				defer func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					os.Remove(fileName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				jpeg.Encode(f, imgH, &jpeg.Options{100}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				err = pdf.Image(fileName, (595-W)/2, (840-H)/2, &gopdf.Rect{W: W, H: H}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					err = errors.New("写入图片失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i := 0; i < pdf.GetNumberOfPages(); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	filename := "退货出库运输温度记录表" + time.Now().Format("20060102150405") + ".pdf" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 保存文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err = pdf.WritePdf("ofile/" + filename); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove(imgPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove(imgPath2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 返回生成的 Excel 文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Ctx.Output.Download("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockRefundOutTransportRecordExport 退货出库运输登记表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 退货出库运输登记表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 退货出库运输登记表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.TransportRecordWordReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/inventory/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockRefundOutTransportRecordExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := models.TransportRecord{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if reqData.Type == "pdf" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.StockRefundOutTransportRecordPdf(reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) GetRefundOutBarCodeInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	barcodeSvc := services.Barcode{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	codeStr := c.GetString("code") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.GetBarCodeInfoReq{Code: codeStr} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var code models.Barcode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//数据权限检查 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err := barcodeSvc.Get(&reqData, &code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, err := s.GetRefundOutBarCodeInfo(&code.Data, code.Data.DeptID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, v := range list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		v["forwardingUnit"] = code.Data.DeptName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.OK(list, "查询成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockTemplateInList 入库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 入库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 入库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateInPageReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/in/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockTemplateRefundInList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.StockTemplateInPageReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, count, err := s.StockTemplateRefundInList(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.PageOK(list, int(count), reqData.GetPageIndex(), reqData.GetPageSize(), "查询成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockTemplateOutList 出库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 出库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 出库列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockTemplateOutPageReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/out/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockTemplateRefundOutList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.StockTemplateOutPageReq{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, count, err := s.StockTemplateRefundOutList(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.PageOK(list, int(count), reqData.GetPageIndex(), reqData.GetPageSize(), "查询成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockRefundOutExport 退货出库单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 退货出库运输登记表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 退货出库运输登记表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockRefundOutExport true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/inventory/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockRefundOutExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.StockRefundOutExport{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	barcodeServ := services.Barcode{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, err := s.StockRefundOutPdf(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptId = deptId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptName = beegouser.GetDeptName(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	code, err := barcodeServ.InsertRefundOut(reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err = errors.New("生成条码失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cs, _ := code128.Encode(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 创建一个要输出数据的文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgPath := "ofile/img/" + code + ".png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file, _ := os.Create(imgPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer file.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 设置图片像素大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	qrCode, _ := barcode.Scale(cs, 205, 50) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 将code128的条形码编码为png图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	png.Encode(file, qrCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols := []float64{160, 140, 45, 70, 70, 105, 105, 105} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	header := []string{"品种", "生产企业", "单位", "单价", "数量", "金额", "批号", "有效期"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows := [][]string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var totalMoney float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		product := utils.ToString(row[models.FieldProductName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		enterprise := utils.ToString(row[models.FieldEnterpriseName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		batchNumber := utils.ToString(row[models.FieldBatchNumber]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, product) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%s", enterprise)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldUnitName])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%.01f", utils.ToFloat64(row["unit_price"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%d", utils.ToInt(row["quantity"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%.01f", utils.ToFloat64(row["money"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldExpiryDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		rows = append(rows, temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalMoney += utils.ToFloat64(row["money"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf := &gopdf.GoPdf{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 841.89, H: 595.28}}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginTop(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginBottom(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddTTFFont("simsun", "static/fonts/MiSans-Medium.ttf") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMargins(2, 5, 5, 5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.SetX(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.SetY(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text("[退货出库]") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(668) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	titleStr := reqData.DeptName + "退货单" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 25) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	textw, _ := pdf.MeasureTextWidth(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX((840 / 2) - (textw / 2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y := 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 40 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("开票日期:" + time.Now().Format("2006-01-02")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第二行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("退货原因:" + reqData.Reason) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	h := 20.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x := curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i := 0; i < len(header); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, header[i], 9, x, y, cols[i], h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range rows { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height := h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lineTexts, _ := pdf.SplitText(txt, cols[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//lineHt := h * float64(len(lineTexts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if len(lineTexts) > 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineTexts, _ = pdf.SplitText(txt, cols[i]-4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineHt := h * float64(len(lineTexts)) * 0.6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if lineHt > height { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height = lineHt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width := cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, height, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetNewY(y+height, height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2 := []float64{160, 140, 45, 70, 70, 105, 210} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	row2 := []string{"", "", "", "", "合计:", fmt.Sprintf("%.02f", totalMoney), utils.AmountConvert(totalMoney, true)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, txt := range row2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width := cols2[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("制  单 人:" + beegouser.GetUserName(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 265 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("经    办    人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 565 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("科室负责人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第二行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 30 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("分管主任:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 265 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("财务部负责人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 565 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("单位负责人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	filename := titleStr + time.Now().Format("20060102150405") + ".pdf" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 保存文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err = pdf.WritePdf("ofile/" + filename); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 返回生成的 Excel 文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Ctx.Output.Download("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// StockScrapOutExport 报废出库单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 报废出库单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 报废出库单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.StockRefundOutExport true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/inventory/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockScrapOutExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := dto.StockRefundOutExport{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, err := s.StockRefundOutPdf(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptId = deptId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptName = beegouser.GetDeptName(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols := []float64{160, 140, 45, 70, 70, 105, 105, 105} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	header := []string{"品种", "生产企业", "单位", "单价", "数量", "金额", "批号", "有效期"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows := [][]string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var totalMoney float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		product := utils.ToString(row[models.FieldProductName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		enterprise := utils.ToString(row[models.FieldEnterpriseName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		batchNumber := utils.ToString(row[models.FieldBatchNumber]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, product) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%s", enterprise)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldUnitName])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%.01f", utils.ToFloat64(row["unit_price"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%d", utils.ToInt(row["quantity"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%.01f", utils.ToFloat64(row["money"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldExpiryDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		rows = append(rows, temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalMoney += utils.ToFloat64(row["money"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf := &gopdf.GoPdf{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 841.89, H: 595.28}}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginTop(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginBottom(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddTTFFont("simsun", "static/fonts/MiSans-Medium.ttf") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMargins(2, 5, 5, 5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	titleStr := reqData.DeptName + "报废出库单" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 25) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	textw, _ := pdf.MeasureTextWidth(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX((840 / 2) - (textw / 2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y := 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 40 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("开票日期:" + time.Now().Format("2006-01-02")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第二行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("报废原因:" + reqData.Reason) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	h := 20.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x := curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i := 0; i < len(header); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, header[i], 9, x, y, cols[i], h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range rows { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height := h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lineTexts, _ := pdf.SplitText(txt, cols[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//lineHt := h * float64(len(lineTexts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if len(lineTexts) > 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineTexts, _ = pdf.SplitText(txt, cols[i]-4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineHt := h * float64(len(lineTexts)) * 0.6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if lineHt > height { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height = lineHt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width := cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, height, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetNewY(y+height, height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2 := []float64{160, 140, 45, 70, 70, 105, 210} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	row2 := []string{"", "", "", "", "合计:", fmt.Sprintf("%.02f", totalMoney), utils.AmountConvert(totalMoney, true)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, txt := range row2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width := cols2[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("制  单 人:" + beegouser.GetUserName(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 265 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("经    办    人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 565 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("科室负责人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第二行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 30., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 30 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("分管主任:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 265 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("财务部负责人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 565 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("单位负责人:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	filename := titleStr + time.Now().Format("20060102150405") + ".pdf" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 保存文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err = pdf.WritePdf("ofile/" + filename); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 返回生成的 Excel 文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Ctx.Output.Download("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TransportRecordExport 运输记录表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Summary 收发登记表word 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Description 收发登记表word 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Tags 库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Param body body dto.TransportRecordWordReq true "body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Success 200 {object} response.Page "{"code": 200, "data": [...]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Router /stock-template/inventory/list [post] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// @Security Bearer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (c StockTemplateController) StockOutExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData := models.TransportRecord{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := c.ParseAndValidate(&c.Ctx.Input.RequestBody, &reqData); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(global.ParseFormErr, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	deptId := beegouser.GetDeptId(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	models.InitBasicData(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s := services.StockTemplate{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	barcodeServ := services.Barcode{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list, err := s.StockTemplateTransportRecordWord(&reqData, deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptID = deptId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.DeptName = beegouser.GetDeptName(c.Ctx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetCreateBy(beegouser.GetUserId(c.Ctx)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reqData.SetDeptId(deptId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	code, err := barcodeServ.Insert(reqData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err = errors.New("生成条码失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		c.Error(500, err, err.Error()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cs, _ := code128.Encode(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 创建一个要输出数据的文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgPath := "ofile/img/" + code + ".png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file, _ := os.Create(imgPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer file.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 设置图片像素大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	qrCode, _ := barcode.Scale(cs, 205, 50) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 将code128的条形码编码为png图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	png.Encode(file, qrCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols := []float64{100, 80, 85, 70, 70, 30, 35, 35, 50} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	header := []string{"品种", "生产企业", "规格", "批号", "有效期", "单位", "数量", "单价", "总价"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows := [][]string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var totalMoney float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var totalQuantity int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		product := utils.ToString(row[models.FieldProductName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		enterprise := utils.ToString(row[models.FieldEnterpriseName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		spec := utils.ToString(row[models.FieldSpecName]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		batchNumber := utils.ToString(row[models.FieldBatchNumber]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, product) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%s", enterprise)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, spec) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, batchNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldExpiryDate])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, utils.ToString(row[models.FieldUnitName])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%d", utils.ToInt(row["quantity"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%.01f", utils.ToFloat64(row["unit_price"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp = append(temp, fmt.Sprintf("%.01f", utils.ToFloat64(row["money"]))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalMoney += utils.ToFloat64(row["money"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalQuantity += utils.ToInt(row["quantity"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		rows = append(rows, temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf := &gopdf.GoPdf{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginTop(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMarginBottom(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddPage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.AddTTFFont("simsun", "static/fonts/MiSans-Medium.ttf") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetMargins(2, 5, 5, 5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.SetX(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.SetY(20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//pdf.Text("[退货出库]") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(420) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	imgPath2 := "ofile/img/" + code + ".jpg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	png2j.Con2jpg(imgPath, imgPath2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Image(imgPath2, 390, 15, &gopdf.Rect{W: 200, H: 35}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	titleStr := reqData.DeptName + "出库单" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 22) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	textw, _ := pdf.MeasureTextWidth(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX((595 / 2) - (textw / 2) - 50) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetY(40) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text(titleStr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y := 20., pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 60 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("收货单位:" + reqData.ReceivingUnit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 220 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("收货人/电话:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 330 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("日期:" + reqData.Date) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 430 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("单据:" + code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	h := 20.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x := curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i := 0; i < len(header); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, header[i], 9, x, y, cols[i], h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, row := range rows { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		curx, y = pdf.GetX(), pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height := h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lineTexts, _ := pdf.SplitText(txt, cols[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//lineHt := h * float64(len(lineTexts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if len(lineTexts) > 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineTexts, _ = pdf.SplitText(txt, cols[i]-4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lineHt := h * float64(len(lineTexts)) * 0.6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if lineHt > height { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height = lineHt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i, txt := range row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width := cols[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, height, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetNewY(y+height, height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 20, pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows2 := []string{"金额(大写)", utils.AmountConvert(totalMoney, true), fmt.Sprintf("%.1f", totalMoney)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2 := [3]float64{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2[0] = cols[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2[1] = cols[1] + cols[2] + cols[3] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols2[2] = cols[4] + cols[5] + cols[6] + cols[7] + cols[8] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, txt := range rows2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width := cols2[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 20, pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows3 := []string{"数量", fmt.Sprintf("%d", totalQuantity)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols3 := [2]float64{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols3[0] = cols[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols3[1] = cols[1] + cols[2] + cols[3] + cols[4] + cols[5] + cols[6] + cols[7] + cols[8] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, txt := range rows3 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width := cols3[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, h, 0, 0, 0, gopdf.Center, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx, y = 20, pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	x = curx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	rows4 := []string{"备注:"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols4 := [1]float64{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cols4[0] = cols[0] + cols[1] + cols[2] + cols[3] + cols[4] + cols[5] + cols[6] + cols[7] + cols[8] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for i, txt := range rows4 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width := cols4[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		utils.RectFillColorMultiCell(pdf, txt, 9, x, y, width, h, 0, 0, 0, gopdf.Left, gopdf.Middle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		x += width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetNewY(y, 20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if pdf.GetY() < 30 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pdf.SetY(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y = pdf.GetY() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetX(curx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	y += 40 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetFont("simsun", "", 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 40 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("主管:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 200 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("制单:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	curx = 400 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.SetXY(curx, y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pdf.Text("库管:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	filename := titleStr + time.Now().Format("20060102150405") + ".pdf" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 保存文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err = pdf.WritePdf("ofile/" + filename); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove(imgPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		os.Remove(imgPath2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 返回生成的 Excel 文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c.Ctx.Output.Download("ofile/" + filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |