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 condition = new HashMap(); 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 condition = new HashMap(); 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 productCodeInfos = productCodeService.selectByOrderCode(ordercode); List 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 productCodeVos = new ArrayList<>(); List printCodeVos = new ArrayList<>(); List 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> 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> 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 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 printCodeVos = new ArrayList<>(); List 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 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 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 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 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 printCodeVos = new ArrayList<>(); List 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 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 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 printCodeVos = new ArrayList<>(); List 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 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 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 contractDetailInfos = contractDetailService.getBaseMapper().selectList( new LambdaQueryWrapper() .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 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 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 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); } ListcodeList = StringUtils.toList(codes); ListproductCodeVos = 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); } ListcodeList = StringUtils.toList(codes); ListproductCodeVos = 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 printCodeVos = new ArrayList<>(); List 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 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 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 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 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 printCodeVos = new ArrayList<>(); List 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 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 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 { ListproductCodeVos = 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 condition = new HashMap(); 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(); } }