From f65443d8abeaedc9d102324565e8368e7c9d90c8 Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:41:54 +0800 Subject: [PATCH] commit --- src/main/java/com/gk/firework/Controller/ContractController.java | 1209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,209 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gk/firework/Controller/ContractController.java b/src/main/java/com/gk/firework/Controller/ContractController.java new file mode 100644 index 0000000..4ea4cc4 --- /dev/null +++ b/src/main/java/com/gk/firework/Controller/ContractController.java @@ -0,0 +1,1209 @@ +package com.gk.firework.Controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gk.firework.Controller.Base.BaseController; +import com.gk.firework.Domain.*; +import com.gk.firework.Domain.Enum.ErrorCode; +import com.gk.firework.Domain.Utils.*; +import com.gk.firework.Domain.Vo.*; +import com.gk.firework.Service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; + +import static com.gk.firework.Domain.Enum.ErrorCode.*; + +@Api(tags = "在线交易合同接口") +@RequestMapping("/contract") +@RestController +public class ContractController extends BaseController { + @Value("${contractPath}") + private String contractPath; //配置文件配置的物理保存地址 + + @Autowired + ContractOrderService contractOrderService; + @Autowired + ContractDetailService contractDetailService; + @Autowired + ContractLogService contractLogService; + @Autowired + ContractUnitDetailService contractUnitDetailService; + @Autowired + ProductService productService; + @Autowired + UserService userService; + @Autowired + ProductCodeService productCodeService; + @Autowired + ProductLocusService productLocusService; + @Autowired + ControlPrintParamService controlPrintParamService; + + @GetMapping("/getApply") + @ApiOperation(value = "获取合同申请数据",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageIndex",value = "当前页码"), + @ApiImplicitParam(name = "pageSize",value = "每页行数"), + @ApiImplicitParam(name = "sort",value = "排序规则"), + @ApiImplicitParam(name = "order",value = "排序字段"), +// @ApiImplicitParam(name = "operator",value = "购买企业"), + @ApiImplicitParam(name = "supplyunitname",value = "生产企业"), + @ApiImplicitParam(name = "status",value = "合同状态"), + @ApiImplicitParam(name = "ordercode",value = "合同单号"), +// @ApiImplicitParam(name = "province",value = "省份"), +// @ApiImplicitParam(name = "city",value = "城市"), +// @ApiImplicitParam(name = "area",value = "区县"), +// @ApiImplicitParam(name = "town",value = "乡镇"), +// @ApiImplicitParam(name = "community",value = "社区"), + }) + public Msg getApplyInfo(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order, + String supplyunitname, String status, String ordercode){ + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + + PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); + HashMap<String, Object> condition = new HashMap<String, Object>(); + + if (StringUtils.isNotBlank(supplyunitname)) { + condition.put("supplyunitname", supplyunitname.trim()); + } + + if (StringUtils.isNotBlank(status)) { + condition.put("status", status.trim()); + } + + if (StringUtils.isNotBlank(ordercode)){ + condition.put("ordercode",ordercode.trim()); + } + + UserInfo userInfo = userService.getById(getUser().getId()); + if (userInfo.getCompanyid() != null){ + condition.put("purchaseenterprisenumber", userInfo.getCompanynumber()); + }else if (userInfo.getType() == 3){ + condition.put("province",userInfo.getProvince()); + condition.put("city",userInfo.getCity()); + condition.put("area",userInfo.getArea()); + condition.put("town",userInfo.getTown()); + condition.put("community",userInfo.getCommunity()); + } + +// if (StringUtils.isNotBlank(province) && condition.get("province") == null){ +// condition.put("province",province.trim()); +// +// if (StringUtils.isNotBlank(city)){ +// condition.put("city",city.trim()); +// } +// +// if (StringUtils.isNotBlank(area)){ +// condition.put("area",area.trim()); +// } +// +// if (StringUtils.isNotBlank(town)){ +// condition.put("town",town.trim()); +// } +// +// if (StringUtils.isNotBlank(community)){ +// condition.put("community",community.trim()); +// } + +// } + + + pageInfo.setCondition(condition); + contractOrderService.selectDataGrid(pageInfo); + msg.setResult(pageInfo); + return msg; + } + + @GetMapping("/getConfirm") + @ApiOperation(value = "获取合同确认数据",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageIndex",value = "当前页码"), + @ApiImplicitParam(name = "pageSize",value = "每页行数"), + @ApiImplicitParam(name = "sort",value = "排序规则"), + @ApiImplicitParam(name = "order",value = "排序字段"), + @ApiImplicitParam(name = "operator",value = "购买企业"), +// @ApiImplicitParam(name = "manufacturer",value = "生产企业"), + @ApiImplicitParam(name = "status",value = "合同状态"), + @ApiImplicitParam(name = "ordercode",value = "合同单号"), + }) + public Msg getConfirm(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order, + String operator, String status, String ordercode){ + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + + PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order); + HashMap<String, Object> condition = new HashMap<String, Object>(); + + if (StringUtils.isNotBlank(operator)) { + condition.put("operator", operator.trim()); + } + + if (StringUtils.isNotBlank(status)) { + condition.put("status", status.trim()); + } + + if (StringUtils.isNotBlank(ordercode)){ + condition.put("ordercode",ordercode.trim()); + } + + UserInfo userInfo = userService.getById(getUser().getId()); + if (userInfo.getCompanyid() != null){ + condition.put("supplyenterprisenumber", userInfo.getCompanynumber()); + }else if (userInfo.getType() == 3){ + condition.put("province",userInfo.getProvince()); + condition.put("city",userInfo.getCity()); + condition.put("area",userInfo.getArea()); + condition.put("town",userInfo.getTown()); + condition.put("community",userInfo.getCommunity()); + } + +// if (StringUtils.isNotBlank(province) && condition.get("province") == null){ +// condition.put("province",province.trim()); +// +// if (StringUtils.isNotBlank(city)){ +// condition.put("city",city.trim()); +// } +// +// if (StringUtils.isNotBlank(area)){ +// condition.put("area",area.trim()); +// } +// +// if (StringUtils.isNotBlank(town)){ +// condition.put("town",town.trim()); +// } +// +// if (StringUtils.isNotBlank(community)){ +// condition.put("community",community.trim()); +// } +// } + + condition.put("confirm",(byte)1); + pageInfo.setCondition(condition); + contractOrderService.selectDataGrid(pageInfo); + msg.setResult(pageInfo); + return msg; + } + + + @ApiOperation(value = "添加合同", response = Msg.class) + @PostMapping("/addApply") + @ApiImplicitParams({ + @ApiImplicitParam(name = "purchaseunitname",value = "单位名称",required = true), + @ApiImplicitParam(name = "purchaseunitaddress",value = "单位地址",required = true), + @ApiImplicitParam(name = "purchaserepresentative",value = "法定代表人",required = true), + @ApiImplicitParam(name = "purchaserepresentativephone",value = "法定代表人联系电话",required = true), + @ApiImplicitParam(name = "purchaserepresentativeemail",value = "法定代表人电子邮箱",required = true), + @ApiImplicitParam(name = "purchasebank",value = "开户银行",required = true), + @ApiImplicitParam(name = "purchaselicensenumber",value = "许可证编号",required = true), + @ApiImplicitParam(name = "purchasezipcode",value = "邮政编码",required = true), + @ApiImplicitParam(name = "purchaseagent",value = "委托代理人",required = true), + @ApiImplicitParam(name = "purchaseagentphone",value = "委托代理人联系电话",required = true), + @ApiImplicitParam(name = "purchaseagentemail",value = "委托代理人电子邮箱",required = true), + @ApiImplicitParam(name = "purchaseaccount",value = "账户",required = true), + @ApiImplicitParam(name = "purchaseenterprisenumber",value = "企业编号",required = true), + + @ApiImplicitParam(name = "supplyunitname",value = "单位名称",required = true), + @ApiImplicitParam(name = "supplyunitaddress",value = "单位地址",required = true), + @ApiImplicitParam(name = "supplyrepresentative",value = "法定代表人",required = true), + @ApiImplicitParam(name = "supplyrepresentativephone",value = "法定代表人联系电话",required = true), + @ApiImplicitParam(name = "supplyrepresentativeemail",value = "法定代表人电子邮箱",required = true), + @ApiImplicitParam(name = "supplybank",value = "开户银行",required = true), + @ApiImplicitParam(name = "supplylicensenumber",value = "许可证编号",required = true), + @ApiImplicitParam(name = "supplyzipcode",value = "邮政编码",required = true), + @ApiImplicitParam(name = "supplyagent",value = "委托代理人",required = true), + @ApiImplicitParam(name = "supplyagentphone",value = "委托代理人联系电话",required = true), + @ApiImplicitParam(name = "supplyagentemail",value = "委托代理人电子邮箱",required = true), + @ApiImplicitParam(name = "supplyaccount",value = "账户",required = true), + @ApiImplicitParam(name = "supplyenterprisenumber",value = "企业编号",required = true), + + + @ApiImplicitParam(name = "signtime",value = "签订时间",required = true), + @ApiImplicitParam(name = "signlocation",value = "签订地点",required = true), + + @ApiImplicitParam(name = "qualitystandard",value = "产品质量标准及要求",required = true), + @ApiImplicitParam(name = "prohibiteddrug",value = "禁(限)用药物要求",required = true), + @ApiImplicitParam(name = "packingstandard",value = "产品包装标准及要求 ",required = true), + @ApiImplicitParam(name = "timeandlocation",value = "提(交)货时间和地点",required = true), + @ApiImplicitParam(name = "transportandcost",value = "运输方式及费用负担",required = true), + @ApiImplicitParam(name = "acceptstandard",value = "验收标准与方法",required = true), + @ApiImplicitParam(name = "objectdeadline",value = "提出异议期限",required = true), + @ApiImplicitParam(name = "settlemethod",value = "结算方式与期限",required = true), + @ApiImplicitParam(name = "productsafetyandquality",value = "产品安全与质量责任",required = true), + @ApiImplicitParam(name = "transportsafety",value = "运输安全责任",required = true), + @ApiImplicitParam(name = "breakcontract",value = "违约责任",required = true), + @ApiImplicitParam(name = "contractdisputesfelid",value = "合同争议的解决方式:序号",required = true), + @ApiImplicitParam(name = "contractdisputesfelidcontent",value = "合同争议的解决方式:序号内容",required = true), + @ApiImplicitParam(name = "otheragreedmatters",value = "其他约定事项",required = true), + + @ApiImplicitParam(name = "validstarttime",value = "合同有效开始时间",required = true), + @ApiImplicitParam(name = "validendtime",value = "合同有效结束时间",required = true), + + @ApiImplicitParam(name = "file",value = "合同附件",required = true), + @ApiImplicitParam(name = "productList",value = "合同产品列表",required = true), + + } + ) + public Msg addApply(ContractOrderVo contractOrderVo) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + contractOrderService.checkAdd(contractOrderVo); + contractOrderService.addApply(contractOrderVo, getUser()); + return msg; + } + + @ApiOperation(value = "修改合同",response = Msg.class) + @PostMapping("/putApply") + public Msg putApply(ContractOrderVo contractOrderVo) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + contractOrderService.checkAdd(contractOrderVo); + contractOrderService.putApply(contractOrderVo, getUser()); + return msg; + } + + @ApiOperation(value = "删除合同",response = Msg.class) + @PostMapping("/delApply") + public Msg putApply(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String operator = getUser().getUsername(); + Long id = jsonObject.getLong("id"); + ContractOrderInfo contractOrderInfo = contractOrderService.getById(id); + // + if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_SUBMIT) && + !contractOrderInfo.getStatus().equals(ContractStatus.Refuse_Product)){ + msg.setCode("999"); + msg.setMessage("合同状态不为待提交、拒绝生产,无法删除"); + return msg; + } + + contractOrderInfo.setIsdel((byte)1); + contractOrderInfo.setModifiedby(operator); + contractOrderInfo.setModifieddate(new Date()); + contractOrderService.updateById(contractOrderInfo); + + ContractLogInfo contractLogInfo = new ContractLogInfo(); + contractLogInfo.setOptlog("删除合同"); + contractLogInfo.setOperator(operator); + contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode()); + contractLogInfo.setOperatordate(new Date()); + contractLogService.save(contractLogInfo); + + return msg; + } + + @ApiOperation(value = "提交合同",response = Msg.class) + @PostMapping("/submitApply") + public Msg submitApply(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String operator = getUser().getUsername(); + Long id = jsonObject.getLong("id"); + ContractOrderInfo contractOrderInfo = contractOrderService.getById(id); + + if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_SUBMIT) && + !contractOrderInfo.getStatus().equals(ContractStatus.Refuse_Product)){ + msg.setCode("999"); + msg.setMessage("合同状态不为待提交、拒绝生产,无法提交"); + return msg; + } + + contractOrderInfo.setStatus(ContractStatus.WAIT_CONFIRM); + contractOrderInfo.setModifiedby(operator); + contractOrderInfo.setModifieddate(new Date()); + contractOrderInfo.setOpinion(""); + contractOrderService.updateById(contractOrderInfo); + + ContractLogInfo contractLogInfo = new ContractLogInfo(); + contractLogInfo.setOptlog("提交合同"); + contractLogInfo.setOperator(operator); + contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode()); + contractLogInfo.setOperatordate(new Date()); + contractLogService.save(contractLogInfo); + + return msg; + } + + @ApiOperation(value = "确认生产", response = Msg.class) + @PostMapping("/confirmProduct") + public Msg confirmProduct(@RequestBody ContractOrderVo contractOrderVo) { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + contractOrderService.checkConfirm(contractOrderVo); + contractOrderService.confirmProduct(contractOrderVo, getUser()); + return msg; + } + + @ApiOperation(value = "导出电子标签号",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "ordercode",value = "合同单号"), + }) + @PostMapping("/exportRFID") + public Msg exportRFID(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String ordercode = jsonObject.getString("ordercode"); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(ordercode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + msg.setCode("999"); + msg.setMessage("合同状态不为已生成,无法导出"); + return msg; + } + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(ordercode); + List<ProductCodeVo> productCodeVoList = new ArrayList<> (); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + String start = productCodeInfo.getOriginalcode().substring(14,19); + Integer end = Integer.parseInt(start)+productCodeInfo.getBoxnumber()-1; + productCodeVo.setBoxrange("("+start+"-"+String.format("%05d", end)+")"); + productCodeVo.setCrc(productCodeInfo.getOrdercode().substring(productCodeInfo.getOrdercode().length()-8)); + productCodeVoList.add(productCodeVo); + } + msg.setResult(productCodeVoList); + return msg; + } + + @ApiOperation(value = "导出内包装码",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "ordercode",value = "合同单号"), + }) + @PostMapping("/exportBarCode") + public Msg exportBarCode(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String ordercode = jsonObject.getString("ordercode"); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(ordercode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + msg.setCode("999"); + msg.setMessage("合同状态不为已生成,无法导出"); + return msg; + } + List<ProductCodeVo> productCodeVos = new ArrayList<>(); + List<ProductCodeVo> printCodeVos = new ArrayList<>(); + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(ordercode); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + + BigDecimal explosiveContent = new BigDecimal(productCodeVo.getExplosivecontent().replace("kg","").replace("g","")); + Integer boxNumber = productCodeVo.getBoxnumber(); +// try { +// productCodeVo.setImg(MatrixToImageWriter.getBase64Img(productCodeInfo.getOriginalcode())); +// }catch (Exception e){ +// e.printStackTrace(); +// } + + if (productCodeVo.getExplosivecontent().contains("kg")){ + BigDecimal explosive = explosiveContent.multiply(new BigDecimal(1000)).divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } else { + BigDecimal explosive = explosiveContent.divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } + + Map<String,List<ProductCodeVo>> result = FireworkDeal.getProductCodeVoList(productCodeVo); + + productCodeVos.addAll(result.get("productCodeVoList")); + printCodeVos.addAll(result.get("printCodeVoList")); + } + + // printCodeVos + int length = printCodeVos.size(); + int pageSize = 10; + int quotient = length / pageSize; + int remainder = length % pageSize; + int maxPageIndex = quotient; + if (remainder > 0) maxPageIndex++; + List<List<ProductCodeVo>> splitPrintSize = new ArrayList<>(); + for (int pageIndex = 0; pageIndex < maxPageIndex; pageIndex++) { + if (pageIndex + 1 == maxPageIndex) { + splitPrintSize.add(printCodeVos.subList(pageIndex * pageSize, length)); + break; + } + splitPrintSize.add(printCodeVos.subList(pageIndex * pageSize, (pageIndex + 1) * pageSize)); + } + + HashMap<String, Object> result = new HashMap<>(); +// result.put("exportInfo", productCodeVos); + result.put("printInfo", splitPrintSize); + msg.setResult(result); + return msg; + } + + @ApiOperation(value = "显示内包装码批次",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "ordercode",value = "合同单号"), + }) + @PostMapping("/batchBarCode") + public Msg batchBarCode(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String ordercode = jsonObject.getString("ordercode"); + Integer needBlank = jsonObject.getInteger("needBlank"); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(ordercode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + msg.setCode("999"); + msg.setMessage("合同状态不为已生成,无法打印"); + return msg; + } + List<ProductCodeVo> printCodeVos = new ArrayList<>(); + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(ordercode); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + BigDecimal explosiveContent = new BigDecimal(productCodeVo.getExplosivecontent().replace("kg","").replace("g","")); + Integer boxNumber = productCodeVo.getBoxnumber(); + if (productCodeVo.getExplosivecontent().contains("kg")){ + BigDecimal explosive = explosiveContent.multiply(new BigDecimal(1000)).divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } else { + BigDecimal explosive = explosiveContent.divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } + printCodeVos.addAll(FireworkDeal.getBatchProductCodeList(productCodeVo,needBlank)); + } + + // printCodeVos + int length = printCodeVos.size(); + int pageSize = 1000; + int quotient = length / pageSize; + int remainder = length % pageSize; + int maxPageIndex = quotient; + if (remainder > 0) maxPageIndex++; + List<ProductCodePrint> splitPrintSize = new ArrayList<>(); + for (int pageIndex = 0; pageIndex < maxPageIndex; pageIndex++) { + ProductCodePrint productCodePrint = new ProductCodePrint(); + productCodePrint.setOrderCode(ordercode); + productCodePrint.setBatchCode(pageIndex+1); + if (pageIndex + 1 == maxPageIndex) { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, length); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getItemcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getItemcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode()); + break; + } + } + splitPrintSize.add(productCodePrint); + } + else { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, (pageIndex + 1) * pageSize); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getItemcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getItemcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode()); + break; + } + } + splitPrintSize.add(productCodePrint); + } + } + + HashMap<String, Object> result = new HashMap<>(); + result.put("printInfo", splitPrintSize); + msg.setResult(result); + return msg; + } + + @ApiOperation(value = "分批打印内包装码",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "orderCode",value = "合同单号"), + @ApiImplicitParam(name = "batchCode",value = "批次号"), + }) + @PostMapping("/printBarCode") + public Msg printBarCode(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String orderCode = jsonObject.getString("orderCode"); + Integer batchCode = jsonObject.getInteger("batchCode"); + Integer needBlank = jsonObject.getInteger("needBlank"); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(orderCode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + msg.setCode("999"); + msg.setMessage("合同状态不为已生成,无法打印"); + return msg; + } + List<ProductCodeVo> printCodeVos = new ArrayList<>(); + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(orderCode); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + BigDecimal explosiveContent = new BigDecimal(productCodeVo.getExplosivecontent().replace("kg","").replace("g","")); + Integer boxNumber = productCodeVo.getBoxnumber(); + if (productCodeVo.getExplosivecontent().contains("kg")){ + BigDecimal explosive = explosiveContent.multiply(new BigDecimal(1000)).divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } else { + BigDecimal explosive = explosiveContent.divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } + printCodeVos.addAll(FireworkDeal.getBatchProductCodeList(productCodeVo,needBlank)); + } + + // printCodeVos + int length = printCodeVos.size(); + int pageSize = 1000; + int quotient = length / pageSize; + int remainder = length % pageSize; + int maxPageIndex = quotient; + if (remainder > 0) maxPageIndex++; + ProductCodePrint productPrint = new ProductCodePrint(); + for (int pageIndex = 0; pageIndex < maxPageIndex; pageIndex++) { + ProductCodePrint productCodePrint = new ProductCodePrint(); + productCodePrint.setOrderCode(orderCode); + productCodePrint.setBatchCode(pageIndex+1); + if (pageIndex + 1 == maxPageIndex) { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, length); + productCodePrint.setProductCodeVos(productCodeVoList); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getItemcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getItemcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode()); + break; + } + } + } else { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, (pageIndex + 1) * pageSize); + productCodePrint.setProductCodeVos(productCodeVoList); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getItemcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getItemcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode()); + break; + } + } + } + + if (productCodePrint.getBatchCode().equals(batchCode)){ + productPrint = productCodePrint; + break; + } + } + msg.setResult(productPrint); + return msg; + } + + @ApiOperation(value = "分批打印内包装码",response = Msg.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "orderCode",value = "合同单号"), + @ApiImplicitParam(name = "batchCode",value = "批次号"), + }) + @PostMapping("/zplPrint") + public Msg zplPrintBarCode(@RequestBody JSONObject jsonObject){ + String orderCode = jsonObject.getString("orderCode"); + Integer batchCode = jsonObject.getInteger("batchCode"); + Integer needBlank = jsonObject.getInteger("needBlank"); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(orderCode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + return new Msg(ERROR_10004,"合同状态不为已生成,无法打印"); + } + List<ProductCodeVo> printCodeVos = new ArrayList<>(); + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(orderCode); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + BigDecimal explosiveContent = new BigDecimal(productCodeVo.getExplosivecontent().replace("kg","").replace("g","")); + Integer boxNumber = productCodeVo.getBoxnumber(); + if (productCodeVo.getExplosivecontent().contains("kg")){ + BigDecimal explosive = explosiveContent.multiply(new BigDecimal(1000)).divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } else { + BigDecimal explosive = explosiveContent.divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } + printCodeVos.addAll(FireworkDeal.getBatchProductCodeList(productCodeVo,needBlank)); + } + + // printCodeVos + int length = printCodeVos.size(); + int pageSize = 1000; + int quotient = length / pageSize; + int remainder = length % pageSize; + int maxPageIndex = quotient; + if (remainder > 0) maxPageIndex++; + ProductCodePrint productPrint = new ProductCodePrint(); + for (int pageIndex = 0; pageIndex < maxPageIndex; pageIndex++) { + ProductCodePrint productCodePrint = new ProductCodePrint(); + productCodePrint.setOrderCode(orderCode); + productCodePrint.setBatchCode(pageIndex+1); + if (pageIndex + 1 == maxPageIndex) { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, length); + productCodePrint.setProductCodeVos(productCodeVoList); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getItemcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getItemcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode()); + break; + } + } + } else { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, (pageIndex + 1) * pageSize); + productCodePrint.setProductCodeVos(productCodeVoList); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getItemcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getItemcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getItemcode()); + break; + } + } + } + + if (productCodePrint.getBatchCode().equals(batchCode)){ + productPrint = productCodePrint; + break; + } + } + + String zpl; + try { + zpl = contractOrderService.generateZplString(productPrint,userService.getById(getUser().getId())); + }catch (Exception e){ + return new Msg(ERROR_40001,"打印出错"); + } + return success(zpl); + } + + + @ApiOperation(value = "拒绝生产",response = Msg.class) + @PostMapping("/rejectProduct") + public Msg rejectProduct(@RequestBody JSONObject jsonObject) throws Exception { + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + String operator = getUser().getUsername(); + Long id = jsonObject.getLong("id"); + ContractOrderInfo contractOrderInfo = contractOrderService.getById(id); + + if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_CONFIRM)) { + msg.setCode("999"); + msg.setMessage("合同状态不为待确认,无法拒绝生产"); + return msg; + } + + contractOrderInfo.setStatus(ContractStatus.Refuse_Product); + contractOrderInfo.setOpinion(jsonObject.getString("opinion")); + contractOrderInfo.setModifiedby(operator); + contractOrderInfo.setModifieddate(new Date()); + contractOrderService.updateById(contractOrderInfo); + + ContractLogInfo contractLogInfo = new ContractLogInfo(); + contractLogInfo.setOptlog("拒绝合同"); + contractLogInfo.setOperator(operator); + contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode()); + contractLogInfo.setOperatordate(new Date()); + contractLogService.save(contractLogInfo); + + return msg; + } + + @ApiOperation(value = "生成条码",response = Msg.class) + @PostMapping("produce") + public Msg produce(@RequestBody JSONObject jsonObject){ + Msg msg = new Msg(); + msg.setCode("200"); + msg.setMessage("success"); + Long id = jsonObject.getLong("id"); + ContractOrderInfo contractOrderInfo = contractOrderService.getById(id); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Confirm_Product)) { + msg.setCode("999"); + msg.setMessage("合同状态不为确认生产,无法生成条码"); + return msg; + } + Date producedate = jsonObject.getDate("producedate"); + if (producedate == null){ + return new Msg(ErrorCode.ERROR_10002); + } + + + + { + //获取合同的产品信息 + List<ContractDetailInfo> contractDetailInfos = contractDetailService.getBaseMapper().selectList( + new LambdaQueryWrapper<ContractDetailInfo>() + .eq(ContractDetailInfo::getOrdercode, contractOrderInfo.getOrdercode())); + + for (ContractDetailInfo detail : contractDetailInfos) { + + String productCode = detail.getDirectioncode(); + //箱数 + Integer boxNum = detail.getNum(); + ProductInfo productInfo = productService.selectByDirection(productCode); + //箱含量 + Integer numPerBox = productInfo.getBoxNumber(); + //查找单日合同产品总数 + int currentNum = boxNum * numPerBox; + List<ContractDetailInfo> detailInfos = contractDetailService.selectAllDetailAtSpecificDate(productCode, producedate); + int numAlready = detailInfos.stream().mapToInt(ContractDetailInfo::getNum).sum() * numPerBox; + //情况1.这个情况应该不会出现 + if (numAlready >= 100000) { + msg.setCode("999"); + msg.setMessage("产品:" + productInfo.getName() + ",指定日超过100000挂,数量为:" + numAlready); + return msg; + } + //情况2 + if (numAlready + currentNum >= 100000) { + msg.setCode("999"); + msg.setMessage("产品:" + productInfo.getName() + "指定日挂数:" + numAlready + ",当前数量:" + currentNum + "总和超过100000"); + return msg; + } + + + } + } + + contractOrderInfo.setProducedate(producedate); + contractOrderService.updateById(contractOrderInfo); + + return msg; + } + + + @ApiOperation(value = "产品导入解析返回",response = Msg.class) + @PostMapping("/{enterprisenumber}/product2json") + public Msg product2json(@PathVariable("enterprisenumber") String enterprisenumber, MultipartFile file) { + List<Product2JsonVo> product2JsonVos = productService.transform2Json(enterprisenumber, file, getUser()); + return success(product2JsonVos); + } + + + /** + * @Description: 查询供货或者购货单位信息 + * @author celin + * @date 2021/5/26 9:33 + */ + @ApiOperation(value = "查询供货或者购货单位信息",response = Msg.class) + @PostMapping("/contractUnitList") + Msg supplyAndPurchaseUnitPage(@RequestBody FilterObject filter) { + Integer pageIndex = filter.getPageIndex(); + Integer pageSize = filter.getPageSize(); + IPage page = contractUnitDetailService.selectSupplyAndPurchaseUnitPage(new Page<>(pageIndex,pageSize),filter.getFilter(),getUser()); + return success(page); + } + + /** + * @Description: 新增供货或者购货单位信息 + * @date 2021/5/26 9:47 + */ + @ApiOperation(value = "新增供货或者购货单位信息",response = Msg.class) + @PostMapping("/addContractUnit") + Msg addSupplyAndPurchaseUnit(@RequestBody ContractUnitDetail contractUnitDetail) { + contractUnitDetailService.checkAdd(contractUnitDetail); + contractUnitDetailService.addSupplyAndPurchaseUnit(contractUnitDetail,getUser()); + return success(); + } + + + /** + * @Description: 修改供货或者购货单位信息 + * @date 2021/5/26 9:47 + */ + @ApiOperation(value = "修改供货或者购货单位信息",response = Msg.class) + @PostMapping("/contractUnit") + Msg modSupplyAndPurchaseUnit(@RequestBody ContractUnitDetail contractUnitDetail) { + contractUnitDetailService.checkAdd(contractUnitDetail); + contractUnitDetailService.modSupplyAndPurchaseUnit(contractUnitDetail,getUser()); + return success(); + } + + /** + * @Description: 删除供货或者购货单位信息 + * @date 2021/5/26 9:47 + */ + @ApiOperation(value = "删除供货或者购货单位信息",response = Msg.class) + @PostMapping("/delContractUnit") + Msg delSupplyAndPurchaseUnit(@RequestParam Long id) { + contractUnitDetailService.delSupplyAndPurchaseUnit(id,getUser()); + return success(); + } + + @GetMapping("/replenishBox") + public Msg replenishBoxPrint(@RequestParam String code){ + if (StringUtils.isBlank(code) || !FireworkDeal.is22Characters(code)){ + return new Msg(ERROR_10004.getCode(),ERROR_10004.getMsg()+":流向码格式不符,请输入包装箱码!"); + } + ProductCodeInfo productCodeInfo = productCodeService.selectByOriginalCode(code); + if (productCodeInfo == null){ + return new Msg(ERROR_50001.getCode(),ERROR_50001.getMsg()+":没有找到相应的产品信息!"); + } + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + String start = productCodeInfo.getOriginalcode().substring(14,19); + Integer end = Integer.parseInt(start)+productCodeInfo.getBoxnumber()-1; + productCodeVo.setBoxrange("("+start+"-"+String.format("%05d", end)+")"); + productCodeVo.setCrc(productCodeInfo.getOrdercode().substring(productCodeInfo.getOrdercode().length()-8)); + + return success(productCodeVo); + } + + /** 打印日志插入 **/ + @PostMapping("/printLog") + public Msg printLog(JSONArray array){ + UserInfo userInfo = userService.getById(getUser().getId()); + for (int i=0;i<array.size();i++){ + String dire = array.getString(i); + ProductVo productVo = productService.selectVoByDirection(dire); + + ProductLocusInfo productLocusInfo = new ProductLocusInfo(dire,new Date(), + new Date(),userInfo.getCompany(),null,ProductLocusInfo.REPLENISH_PRINT_STATUS, + productVo.getBoxNumber().toString()); + productLocusService.insertProductLocus(productLocusInfo); + } + + return success(); + } + + + @ApiOperation(value = "退回电子标签",response = Msg.class) + @PostMapping("/{ordercode}/returnTag") + public Msg returnTag(@PathVariable("ordercode") String ordercode, MultipartFile file) { + contractOrderService.returnTag(ordercode, file,getUser()); + List<ProductVo> productVoList = contractDetailService.selectByOrder(ordercode); + return success(productVoList); + } + + + @ApiOperation(value = "外包装箱码使用插件打印",response = Msg.class) + @PostMapping("/replenishBoxPrint") + public Msg replenishBoxZplPrint(@RequestBody JSONObject jsonObject){ + String codes = jsonObject.getString("codes"); + UserInfo userInfo = userService.getById(getUser().getId()); + if (StringUtils.isBlank(codes)){ + return new Msg(ERROR_10004); + } + List<String>codeList = StringUtils.toList(codes); + List<ProductCodeVo>productCodeVos = new ArrayList<>(); + for (String code : codeList){ + if (StringUtils.isBlank(code) || !FireworkDeal.is22Characters(code)){ + return new Msg(ERROR_10004.getCode(),ERROR_10004.getMsg()+":流向码格式不符,请输入包装箱码!"); + } + ProductCodeInfo productCodeInfo = productCodeService.selectByOriginalCode(code); + if (productCodeInfo == null){ + return new Msg(ERROR_50001.getCode(),ERROR_50001.getMsg()+":没有找到相应的产品信息!"); + } + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + String start = productCodeInfo.getOriginalcode().substring(14,19); + Integer end = Integer.parseInt(start)+productCodeInfo.getBoxnumber()-1; + productCodeVo.setBoxrange("("+start+"-"+String.format("%05d", end)+")"); + productCodeVo.setCrc(productCodeInfo.getOrdercode().substring(productCodeInfo.getOrdercode().length()-8)); + productCodeVos.add(productCodeVo); + } + String zplString = contractOrderService.generateOuterTag(productCodeVos,userInfo); + return success(zplString); + } + + @ApiOperation(value = "内包装码使用插件打印",response = Msg.class) + @PostMapping("/replenishInnerPrint") + public Msg replenishInnerZplPrint(@RequestBody JSONObject jsonObject){ + String codes = jsonObject.getString("codes"); + if (StringUtils.isBlank(codes)){ + return new Msg(ERROR_10004); + } + List<String>codeList = StringUtils.toList(codes); + List<ProductCodeVo>productCodeVos = new ArrayList<>(); + for (String code : codeList){ + if (StringUtils.isBlank(code) || !FireworkDeal.is19Characters(code)){ + return new Msg(ERROR_10004.getCode(),ERROR_10004.getMsg()+":流向码格式不符,请输入包装箱码!"); + } + + ProductInfo productInfo = productService.selectByDirection(code); + DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(code); + int j = Integer.parseInt(directionDetail.getSerialNo())%productInfo.getBoxNumber(); + if (j == 0){ + j = productInfo.getBoxNumber(); + } + int i = Integer.parseInt(directionDetail.getSerialNo()) - j + 1; + String boxCode = directionDetail.getItemCode() + directionDetail.getDateCode() + + String.format("%05d",i)+ String.format("%03d",productInfo.getBoxNumber()); + + ProductCodeInfo productCodeInfo = productCodeService.selectByOriginalCode(boxCode); + if (productCodeInfo == null){ + return new Msg(ERROR_50001.getCode(),ERROR_50001.getMsg()+":没有找到相应的产品信息!"); + } + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + productCodeVo.setItemcode(code); + String start = productCodeInfo.getOriginalcode().substring(14,19); + Integer end = Integer.parseInt(start)+productCodeInfo.getBoxnumber()-1; + productCodeVo.setBoxrange("("+start+"-"+String.format("%05d", end)+")"); + productCodeVo.setCrc(productCodeInfo.getOrdercode().substring(productCodeInfo.getOrdercode().length()-8)); + productCodeVos.add(productCodeVo); + } + if (productCodeVos.size() % 2 == 1){ + productCodeVos.add(new ProductCodeVo()); + } + UserInfo userInfo = userService.getById(getUser().getId()); + String zplString = contractOrderService.generateInnerTag(productCodeVos,userInfo); + return success(zplString); + } + + @ApiOperation(value = "合同箱码获取批次信息",response = Msg.class) + @PostMapping("/replenishBoxBatch") + public Msg replenishBoxBatch(@RequestBody JSONObject jsonObject){ + String orderCode = jsonObject.getString("orderCode"); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(orderCode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + return new Msg(ERROR_50002,"合同状态不为已生成,无法打印"); + } + List<ProductCodeVo> printCodeVos = new ArrayList<>(); + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(orderCode); + int length = productCodeInfos.size(); + int pageSize = 1000; + int quotient = length / pageSize; + int remainder = length % pageSize; + int maxPageIndex = quotient; + if (remainder > 0) maxPageIndex++; + List<ProductCodePrint> splitPrintSize = new ArrayList<>(); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + BigDecimal explosiveContent = new BigDecimal(productCodeVo.getExplosivecontent().replace("kg","").replace("g","")); + Integer boxNumber = productCodeVo.getBoxnumber(); + if (productCodeVo.getExplosivecontent().contains("kg")){ + BigDecimal explosive = explosiveContent.multiply(new BigDecimal(1000)).divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } else { + BigDecimal explosive = explosiveContent.divide(new BigDecimal(boxNumber),0, RoundingMode.HALF_UP); + productCodeVo.setExplosivecontent(explosive + "g"); + } + + printCodeVos.add(productCodeVo); + } + for (int pageIndex = 0; pageIndex < maxPageIndex; pageIndex++) { + ProductCodePrint productCodePrint = new ProductCodePrint(); + productCodePrint.setOrderCode(orderCode); + productCodePrint.setBatchCode(pageIndex+1); + if (pageIndex + 1 == maxPageIndex) { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, length); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getOriginalcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getOriginalcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode()); + break; + } + } + splitPrintSize.add(productCodePrint); + } + else { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, (pageIndex + 1) * pageSize); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getOriginalcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getOriginalcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode()); + break; + } + } + splitPrintSize.add(productCodePrint); + } + } + + HashMap<String, Object> result = new HashMap<>(); + result.put("printInfo", splitPrintSize); + return success(result); + } + + @ApiOperation(value = "合同箱码根据批次打印",response = Msg.class) + @PostMapping("/replenishBoxBatchPrint") + public Msg replenishBoxBatchPrint(@RequestBody JSONObject jsonObject){ + String orderCode = jsonObject.getString("orderCode"); + Integer batchCode = jsonObject.getInteger("batchCode"); + UserInfo userInfo = userService.getById(getUser().getId()); + ContractOrderInfo contractOrderInfo = contractOrderService.selectByOrderCode(orderCode); + if (!contractOrderInfo.getStatus().equals(ContractStatus.Generated)) { + return new Msg(ERROR_50002,"合同状态不为已生成,无法打印"); + } + List<ProductCodeVo> printCodeVos = new ArrayList<>(); + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(orderCode); + for (ProductCodeInfo productCodeInfo : productCodeInfos){ + ProductCodeVo productCodeVo = BeanUtils.copy(productCodeInfo,ProductCodeVo.class); + String start = productCodeInfo.getOriginalcode().substring(14,19); + Integer end = Integer.parseInt(start)+productCodeInfo.getBoxnumber()-1; + productCodeVo.setBoxrange("("+start+"-"+String.format("%05d", end)+")"); + productCodeVo.setCrc(productCodeInfo.getOrdercode().substring(productCodeInfo.getOrdercode().length()-8)); + printCodeVos.add(productCodeVo); + } + + // printCodeVos + int length = printCodeVos.size(); + int pageSize = 1000; + int quotient = length / pageSize; + int remainder = length % pageSize; + int maxPageIndex = quotient; + if (remainder > 0) maxPageIndex++; + ProductCodePrint productPrint = new ProductCodePrint(); + for (int pageIndex = 0; pageIndex < maxPageIndex; pageIndex++) { + ProductCodePrint productCodePrint = new ProductCodePrint(); + productCodePrint.setOrderCode(orderCode); + productCodePrint.setBatchCode(pageIndex+1); + if (pageIndex + 1 == maxPageIndex) { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, length); + productCodePrint.setProductCodeVos(productCodeVoList); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getOriginalcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getOriginalcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode()); + break; + } + } + } else { + List<ProductCodeVo> productCodeVoList = printCodeVos.subList(pageIndex * pageSize, (pageIndex + 1) * pageSize); + productCodePrint.setProductCodeVos(productCodeVoList); + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(i).getOriginalcode())) { + productCodePrint.setStartCode(productCodeVoList.get(i).getOriginalcode()); + break; + } + } + for (int i = 0; i< 4; i++) { + if (StringUtils.isNotBlank(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode())) { + productCodePrint.setEndCode(productCodeVoList.get(productCodeVoList.size()-1-i).getOriginalcode()); + break; + } + } + } + + if (productCodePrint.getBatchCode().equals(batchCode)){ + productPrint = productCodePrint; + break; + } + } + + String zpl; + try { + List<ProductCodeVo>productCodeVos = productPrint.getProductCodeVos(); + zpl = contractOrderService.generateOuterTag(productCodeVos, userInfo); + }catch (Exception e){ + return new Msg(ERROR_40001,"生成标签出错"); + } + return success(zpl); + } + + @GetMapping("/getControlParams") + public Msg getControlParams(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order, + String enterprisename, String type) { + PageInfo pageInfo = new PageInfo(pageIndex, pageSize, sort, order); + HashMap<String, Object> condition = new HashMap<String, Object>(); + + if (StringUtils.isNotBlank(enterprisename)) { + condition.put("enterprisename", enterprisename.trim()); + } + + if (StringUtils.isNotBlank(type)) { + condition.put("type", type.trim()); + } + Integer userType = getUser().getType(); + //非admin只能看自己的 + if (userType != 1) { + condition.put("owner", getUser().getUsername()); + } + + pageInfo.setCondition(condition); + controlPrintParamService.selectDataGrid(pageInfo); + + return success(pageInfo); + } + + @PostMapping("/setControlParams") + public Msg setControlParams(ControlPrintParam controlPrintParam){ + + return success(); + } + + + /** + * @Description: 获取特定type配置 + * @date 2022/2/11 14:09 + */ + @GetMapping("/getOwnSelectType") + public Msg getControlParams(@RequestParam Byte type) { + ControlPrintParam res = controlPrintParamService.getOwnSelectType(type, getUser()); + return success(res); + } + + + /** + * @Description: 新增配置方案 + * @date 2022/2/11 16:16 + */ + @PostMapping("/addControlParams") + public Msg addControlParams(@RequestBody ControlPrintParam controlPrintParam){ + controlPrintParamService.addOrUpdateControlParams(controlPrintParam,getUser()); + return success(); + } + + + /** + * @Description: 更新配置方案 + * @date 2022/2/11 17:29 + */ + + @PostMapping("/updateControlParams") + public Msg updateControlParams(@RequestBody ControlPrintParam controlPrintParam){ + controlPrintParamService.updateControlParams(controlPrintParam,getUser()); + return success(); + } + + +} -- Gitblit v1.9.2