package com.gk.firework.Service.ServiceImpl; import com.gk.firework.Domain.ContractFile; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.firework.Domain.*; import com.gk.firework.Domain.Enum.EnterpriseSafetySupervision; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.Utils.PageInfo; import com.gk.firework.Domain.Utils.Properties; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Domain.Utils.UploadUtil; import com.gk.firework.Domain.Vo.*; import com.gk.firework.Mapper.ContractDetailInfoMapper; import com.gk.firework.Mapper.ContractOrderInfoMapper; import com.gk.firework.Service.*; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; @Service("ContractOrderService") public class ContractOrderServiceImpl extends ServiceImpl implements ContractOrderService { @Autowired ContractOrderInfoMapper contractOrderInfoMapper; @Autowired ContractDetailInfoMapper contractDetailInfoMapper; @Autowired ContractFileService contractFileService; @Autowired ContractDetailService contractDetailService; @Autowired ContractLogService contractLogService; @Autowired UserService userService; @Autowired EnterpriseService enterpriseService; @Autowired ProductCodeService productCodeService; @Autowired ProductLocusService productLocusService; @Autowired ProductService productService; @Autowired ExcelExportService excelExportService; @Autowired ControlPrintParamService controlPrintParamService; @Override public void selectDataGrid(PageInfo pageInfo) { Page page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); List orderItems = new ArrayList<>(); OrderItem orderItem = new OrderItem(); if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) { orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending")); orderItem.setColumn(pageInfo.getSort()); }else { orderItem.setAsc(false); orderItem.setColumn("createddate"); } orderItems.add(orderItem); page.setOrders(orderItems); List list = contractOrderInfoMapper.selectDataGrid(page,pageInfo.getCondition()); for (ContractOrderVo contractOrderVo : list) { List productVoList = contractDetailInfoMapper.selectByOrder(contractOrderVo.getOrdercode()); ContractFile contractFile = contractFileService.selectByOrderCode(contractOrderVo.getOrdercode()); contractOrderVo.setProductInfoList(productVoList); contractOrderVo.setContractFile(contractFile); } pageInfo.setResult(list); pageInfo.setTotalCount(page.getTotal()); } @Override public List selectByStatus(String status, String now) { return contractOrderInfoMapper.selectByStatus(status,now); } @Override public ContractOrderInfo selectByOrderCode(String ordercode) { return contractOrderInfoMapper.selectByOrderCode(ordercode); } @Override @Transactional public void addApply(ContractOrderVo contractOrderVo, UserInfo user) { UserInfo userInfo = userService.getById(user.getId()); if (StringUtils.isBlank(userInfo.getCompanynumber())) { throw new BusinessException("没有权限新增"); } Enterprise enterprise = enterpriseService.selectEnterpriseByNumber(userInfo.getCompanynumber()); assert enterprise.getSafetysupervision() != null; if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())) { throw new BusinessException("生产企业不可以申请合同"); } //单号 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String ordercode = "CT"+sdf.format(new Date()); String operator = user.getUsername(); //规律的单号 String regularCode = this.generateRegularCode(); JSONArray jsonArray = JSONArray.parseArray(contractOrderVo.getProductList()); List contractDetails = jsonArray.toJavaList(ContractDetailInfo.class); if (contractDetails.size() <1) throw new BusinessException("产品不能为空"); //上传附件 MultipartFile file = contractOrderVo.getFile(); if (file != null ) { try { ContractFile attachment = new ContractFile(); String name = UploadUtil.uploadFile(file, Properties.contractPath); attachment.setValidflag(true); attachment.setOrdercode(ordercode); attachment.setFilename(file.getOriginalFilename()); attachment.setUrl(Properties.contract + name); attachment.setCreateby(user.getId()); attachment.setCreatebyname(user.getUsername()); attachment.setCreatetime(new Date()); contractFileService.save(attachment); } catch (Exception e) { e.printStackTrace(); throw new BusinessException("上传文件失败"); } } //甲方单位编号 contractOrderVo.setPurchaseenterprisenumber(userInfo.getCompanynumber()); contractOrderVo.setRegularcode(regularCode); contractOrderVo.setOrdercode(ordercode); contractOrderVo.setStatus(ContractStatus.WAIT_SUBMIT); contractOrderVo.setOperator(operator); contractOrderVo.setCreatedby(operator); contractOrderVo.setCreateddate(new Date()); contractOrderVo.setModifiedby(operator); contractOrderVo.setModifieddate(new Date()); contractOrderVo.setIsdel((byte)0); contractOrderVo.setManufacturer(contractOrderVo.getSupplyunitname()); this.save(contractOrderVo); if (contractDetails.size() > 0) { for (ContractDetailInfo contractDetail : contractDetails) { ProductInfo productInfo = productService.selectByDirection(contractDetail.getDirectioncode()); if (productInfo == null) { throw new BusinessException(String.format("产品不存在,流向码:%s", contractDetail.getName())); } if (contractDetail.getNum() == null) { throw new BusinessException(String.format("请输入%s"+"的产品数量",contractDetail.getName())); } if (contractDetail.getPrice() == null) { throw new BusinessException(String.format("请输入%s"+"的进货单价",contractDetail.getName())); } contractDetail.setOrdercode(ordercode); contractDetailService.save(contractDetail); } } ContractLogInfo contractLogInfo = new ContractLogInfo(); contractLogInfo.setOptlog("新增合同"); contractLogInfo.setOperator(operator); contractLogInfo.setOrdercode(ordercode); contractLogInfo.setOperatordate(new Date()); contractLogService.save(contractLogInfo); } @Override @Transactional public void putApply(ContractOrderVo contractOrderVo, UserInfo user) { UserInfo userInfo = userService.getById(user.getId()); if (StringUtils.isBlank(userInfo.getCompanynumber())) { throw new BusinessException("没有权限修改"); } String operator = user.getUsername(); JSONArray jsonArray = JSONArray.parseArray(contractOrderVo.getProductList()); List contractDetails = jsonArray.toJavaList(ContractDetailInfo.class); if (contractDetails.size() <1) throw new BusinessException("产品不能为空"); ContractOrderInfo contractOrderInfo = this.getById(contractOrderVo.getId()); if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_SUBMIT) && !contractOrderInfo.getStatus().equals(ContractStatus.Refuse_Product)){ throw new BusinessException("合同状态不为待提交、拒绝生产,无法修改"); } //上传附件 MultipartFile file = contractOrderVo.getFile(); if (file != null ) { try { contractFileService.deleteAll(contractOrderVo.getOrdercode()); ContractFile attachment = new ContractFile(); String name = UploadUtil.uploadFile(file, Properties.contractPath); attachment.setValidflag(true); attachment.setOrdercode(contractOrderVo.getOrdercode()); attachment.setFilename(file.getOriginalFilename()); attachment.setUrl(Properties.contract + name); attachment.setCreateby(user.getId()); attachment.setCreatebyname(user.getUsername()); attachment.setCreatetime(new Date()); contractFileService.save(attachment); } catch (Exception e) { e.printStackTrace(); throw new BusinessException("上传文件失败"); } } contractOrderVo.setManufacturer(contractOrderVo.getSupplyunitname()); this.updateById(contractOrderVo); if (contractDetails != null && contractDetails.size() > 0) { contractDetailService.deleteByOrder(contractOrderInfo.getOrdercode()); for (ContractDetailInfo contractDetail : contractDetails) { if (contractDetail.getNum() == null) { throw new BusinessException(String.format("请输入%s"+"的产品数量",contractDetail.getName())); } if (contractDetail.getPrice() == null) { throw new BusinessException(String.format("请输入%s"+"的进货单价",contractDetail.getName())); } contractDetail.setOrdercode(contractOrderVo.getOrdercode()); contractDetailService.save(contractDetail); } } ContractLogInfo contractLogInfo = new ContractLogInfo(); contractLogInfo.setOptlog("修改合同"); contractLogInfo.setOperator(operator); contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode()); contractLogInfo.setOperatordate(new Date()); contractLogService.save(contractLogInfo); } @Override @Transactional public void confirmProduct(ContractOrderVo contractOrderVo, UserInfo user) { String operator = user.getUsername(); ContractOrderInfo contractOrderInfo = this.getById(contractOrderVo.getId()); //上传附件 MultipartFile file = contractOrderVo.getFile(); if (file != null ) { try { ContractFile attachment = new ContractFile(); String name = UploadUtil.uploadFile(file, Properties.contractPath); attachment.setValidflag(true); attachment.setFilename(file.getOriginalFilename()); attachment.setUrl(Properties.contract + name); attachment.setCreateby(user.getId()); attachment.setCreatebyname(user.getUsername()); attachment.setCreatetime(new Date()); contractFileService.save(attachment); } catch (Exception e) { e.printStackTrace(); throw new BusinessException("上传文件失败"); } } if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_CONFIRM)) { throw new BusinessException("合同状态不为待确认,无法确认生产"); } contractOrderInfo.setStatus(ContractStatus.Confirm_Product); contractOrderInfo.setModifiedby(operator); contractOrderInfo.setModifieddate(new Date()); contractOrderInfo.setReturnstatus("未退回"); contractOrderInfo.setSupplyunitaddress(contractOrderVo.getSupplyunitaddress()); contractOrderInfo.setSupplyrepresentative(contractOrderVo.getSupplyrepresentative()); contractOrderInfo.setSupplyrepresentativephone(contractOrderVo.getSupplyrepresentativephone()); contractOrderInfo.setSupplybank(contractOrderVo.getSupplybank()); contractOrderInfo.setSupplylicensenumber(contractOrderVo.getSupplylicensenumber()); contractOrderInfo.setSupplyzipcode(contractOrderVo.getSupplyzipcode()); contractOrderInfo.setSupplyagent(contractOrderVo.getSupplyagent()); contractOrderInfo.setSupplyagentphone(contractOrderVo.getSupplyagentphone()); contractOrderInfo.setSupplyagentemail(contractOrderVo.getSupplyagentemail()); contractOrderInfo.setSupplyaccount(contractOrderVo.getSupplyaccount()); this.updateById(contractOrderInfo); ContractLogInfo contractLogInfo = new ContractLogInfo(); contractLogInfo.setOptlog("确认合同"); contractLogInfo.setOperator(operator); contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode()); contractLogInfo.setOperatordate(new Date()); contractLogService.save(contractLogInfo); } /** * @Description: 申请校验 * @date 2021/5/11 13:55 */ @Override public void checkAdd(ContractOrderVo contractOrderVo) { if (StringUtils.isBlank(contractOrderVo.getSignlocation())) { throw new BusinessException("签订地点不能为空"); } if (contractOrderVo.getSigntime() == null) { throw new BusinessException("签订时间不能为空"); } if (StringUtils.isBlank(contractOrderVo.getProductList())) { throw new BusinessException("产品列表不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyenterprisenumber()) || StringUtils.isBlank(contractOrderVo.getSupplyunitname())) { throw new BusinessException("生产企业不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaseunitaddress())) { throw new BusinessException("供货单位地址不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaserepresentative())) { throw new BusinessException("供货单位法定代表人联系电话不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaserepresentativeemail())) { throw new BusinessException("供货单位法定代表人电子邮箱不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchasebank())) { throw new BusinessException("供货单位开户银行不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaselicensenumber())) { throw new BusinessException("供货单位许可证编号不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchasezipcode())) { throw new BusinessException("供货单位许可证编号不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaseagent())) { throw new BusinessException("供货单位委托代理人不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaseagentphone())) { throw new BusinessException("供货单位委托代理人联系电话不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPurchaseaccount())) { throw new BusinessException("供货单位账户不能为空"); } //合同内容: if (StringUtils.isBlank(contractOrderVo.getQualitystandard())) { throw new BusinessException("产品质量标准及要求不能为空"); } if (StringUtils.isBlank(contractOrderVo.getProhibiteddrug())) { throw new BusinessException("禁(限)用药物要求不能为空"); } if (StringUtils.isBlank(contractOrderVo.getPackingstandard())) { throw new BusinessException("产品包装标准及要求不能为空"); } if (StringUtils.isBlank(contractOrderVo.getTimeandlocation())) { throw new BusinessException("提(交)货时间和地点不能为空"); } if (StringUtils.isBlank(contractOrderVo.getTransportandcost())) { throw new BusinessException("运输方式及费用负担不能为空"); } if (StringUtils.isBlank(contractOrderVo.getAcceptstandard())) { throw new BusinessException("验收标准与方法不能为空"); } if (StringUtils.isBlank(contractOrderVo.getObjectdeadline())) { throw new BusinessException("提出异议期限不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSettlemethod())) { throw new BusinessException("结算方式与期限不能为空"); } if (StringUtils.isBlank(contractOrderVo.getProductsafetyandquality())) { throw new BusinessException("产品安全与质量责任不能为空"); } if (StringUtils.isBlank(contractOrderVo.getTransportsafety())) { throw new BusinessException("运输安全责任不能为空"); } if (StringUtils.isBlank(contractOrderVo.getBreakcontract())) { throw new BusinessException("违约责任不能为空"); } if (StringUtils.isBlank(contractOrderVo.getContractdisputesfelid())) { throw new BusinessException("合同争议的解决方式不能为空"); } if (StringUtils.isBlank(contractOrderVo.getOtheragreedmatters())) { throw new BusinessException("其他约定事项不能为空"); } //有效期 if (contractOrderVo.getValidstarttime() == null || contractOrderVo.getValidendtime() == null) { throw new BusinessException("合同有效期不能为空"); } } /** * @Description: 确认校验 * @date 2021/5/11 13:55 */ @Override public void checkConfirm(ContractOrderVo contractOrderVo) { if (StringUtils.isBlank(contractOrderVo.getSupplyunitaddress())) { throw new BusinessException("生产单位地址不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyrepresentative())) { throw new BusinessException("生产单位法定代表人联系电话不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyrepresentativeemail())) { throw new BusinessException("生产单位法定代表人电子邮箱不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplybank())) { throw new BusinessException("生产单位开户银行不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplylicensenumber())) { throw new BusinessException("生产单位许可证编号不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyzipcode())) { throw new BusinessException("生产单位邮政编码不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyagent())) { throw new BusinessException("生产单位委托代理人不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyagentphone())) { throw new BusinessException("生产单位委托代理人联系电话不能为空"); } if (StringUtils.isBlank(contractOrderVo.getSupplyaccount())) { throw new BusinessException("生产单位账户不能为空"); } } @Override @Transactional public void returnTag(String ordercode, MultipartFile file,UserInfo userInfo) { if (StringUtils.isBlank(ordercode)) { throw new BusinessException("参数传递错误"); } List productCodeInfos = productCodeService.selectByOrderCode(ordercode); if (productCodeInfos.size() < 1) { throw new BusinessException("订单编号或者产品出现问题"); } byte [] byteArr; try { byteArr = file.getBytes(); String originalFilename = file.getOriginalFilename(); InputStream inputStream = new ByteArrayInputStream(byteArr); assert originalFilename != null; boolean isExcel2007 = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).endsWith("xlsx"); //解析 List parsedTags = excelExportService.parseProductCode(inputStream, userInfo, isExcel2007); assert parsedTags.size() > 0; Set distinctSet = new HashSet<>(parsedTags); if (distinctSet.size() != parsedTags.size()) { throw new BusinessException("文件中有重复标签在不同行"); } //更新电子标签isdel = 1 { List updatesTags = new ArrayList<>(); Date now = new Date(); for (String returnTag : parsedTags) { boolean isError = true; for (ProductCodeInfo realCode : productCodeInfos) { if (realCode.getOriginalcode().equals(returnTag)) { isError = false; //开始更新计数 realCode.setIsdel((byte) 1); updatesTags.add(realCode); //流向 ProductLocusInfo flow = new ProductLocusInfo(); flow.setCreateddate(now); flow.setModifieddate(now); //流向内容为 退货人 flow.setContent(userInfo.getUsername()); flow.setDirectioncode(returnTag); flow.setType(ProductLocusInfo.ELECTRONIC_LABEL_RETURN_STATUS); flow.setBoxcode(Integer.valueOf(returnTag.substring(19,22)).toString()); productLocusService.insertProductLocus(flow); } } //如果上传的标签不在合同编号的电子标签,则有问题 if (isError) { throw new BusinessException(returnTag + ":上传的产品电子标签不是该订单的电子标签或者该标签已经退回"); } } //执行退回标签 productCodeService.updateBatchById(updatesTags); } //变更数量统计 { Map changeMap = new HashMap<>(); for (String parsedTag : parsedTags) { String productCode = parsedTag.substring(0, 10); if (changeMap.get(productCode) == null) { changeMap.put(productCode, 1); } else { Integer count = changeMap.get(productCode); changeMap.put(productCode, ++count); } } for (Map.Entry entry : changeMap.entrySet()) { String productCode = entry.getKey(); Integer returnNum = entry.getValue(); //ordercode 和10位productCode 来更新一个变更数量 contractDetailService.updateChangNum(ordercode,productCode, returnNum); } } //更新单子状态-》有退回 contractOrderInfoMapper.updateReturnStatus(ordercode,"有退回"); } catch (IOException e) { e.printStackTrace(); throw new BusinessException("文件传输发生错误"); } } @Override public String generateZplString(ProductCodePrint productPrint, UserInfo userInfo) { ListproductCodeVos = productPrint.getProductCodeVos(); //ZplUtil zplUtil = new ZplUtil(); return generateInnerTag(productCodeVos, userInfo); } @Override public String generateInnerTag(List productCodeVos, UserInfo userInfo){ StringBuilder builder = new StringBuilder(); byte type = 1; ControlPrintParam controlPrintParam = controlPrintParamService.getParamsByUser(userInfo,type); for (int i = 0; i < productCodeVos.size(); i++){ ProductCodeVo productCodeVo = productCodeVos.get(i); if (productCodeVo == null || (StringUtils.isBlank(productCodeVo.getOrdercode())&& StringUtils.isBlank(productCodeVo.getItemcode()))){ if (i % 2 == 1){ if (!builder.toString().endsWith("^XZ")){ builder.append("^XZ"); }else { builder.append("^XA^FD.").append("^XZ"); } } continue; } String code = productCodeVo.getItemcode(); String title = "新疆流向专用"; String date = DateFormatUtils.format(productCodeVo.getCreateddate(), "yyyy-MM-dd HH:mm:ss"); Integer baseX = controlPrintParam.getLeftBaseX(); Integer titleY = controlPrintParam.getTitleY(); Integer titleOffsetX = controlPrintParam.getTitleOffsetX(); Integer barCodeWidth = controlPrintParam.getBarcodeWidth(); Integer barCodeWidthRatio = controlPrintParam.getBarcodeWidthRadio(); Integer barCodeHeight = controlPrintParam.getBarcodeHeight(); Integer barCodeY = controlPrintParam.getBarcodeY(); Integer qrCodeModel = controlPrintParam.getQrCodeModel(); Integer qrCodeMagnification = controlPrintParam.getQrCodeMagnification(); Integer qrX = controlPrintParam.getLeftQrX(); Integer qrY = controlPrintParam.getQrY(); Integer fontSize = controlPrintParam.getFontsize1(); Integer fontSize2 = controlPrintParam.getFontsize2(); Integer fontSize3 = controlPrintParam.getFontsize3(); Integer barCodeTextY = controlPrintParam.getBarcodeTextY(); Integer itemNameY = controlPrintParam.getItemNameY(); Integer typeY = controlPrintParam.getTypeY(); Integer dateY = controlPrintParam.getDateY(); Integer manufacturerY = controlPrintParam.getManufacturerY(); Integer manufacturerY2 = controlPrintParam.getManufacturerY2(); Integer frameX = controlPrintParam.getLeftFrameX(); Integer frameY = controlPrintParam.getFrameY(); Integer frameWidth = controlPrintParam.getFrameWidth(); Integer frameHeight = controlPrintParam.getFrameHeight(); Integer darkness = controlPrintParam.getDarkness(); //左标签 if (i % 2 == 0){ //^XA 开始 ;^JMA 正常打印浓度 ;^SEE:GB18030.DAT^CW1,E:SIMSUN.FNT 支持中文编码 builder.append("^XA").append("^JMA").append("^MD").append(darkness).append("^CI28^SEE:GB18030.DAT^CW1,E:SIMSUN.TTF"); }else { baseX = controlPrintParam.getRightBaseX(); qrX = controlPrintParam.getRightQrX(); frameX = controlPrintParam.getRightFrameX(); } //标签头 //builder.append("^FO").append(baseX).append(",").append(titleY).append("^GFA,64896,64896,00156,").append(title); builder.append("^FO").append(baseX+titleOffsetX).append(",").append(titleY).append("^A1N,").append(fontSize3) .append(",").append(fontSize3).append("^FD").append(title).append("^FS"); //条形码 builder.append("^BY").append(barCodeWidth).append(",").append(barCodeWidthRatio).append(",") .append(barCodeHeight).append("^FO").append(baseX).append(",").append(barCodeY) .append("^BCN,,N,N^FD").append(code).append("^FS"); //二维码 builder.append("^BQN,").append(qrCodeModel).append(",").append(qrCodeMagnification).append("^FO") .append(qrX).append(",").append(qrY).append("^FDLA,").append(code).append("^FS"); //条形码文字 builder.append("^FO").append(baseX).append(",").append(barCodeTextY).append("^A1N,") .append(fontSize).append("^FD").append(code).append("^FS"); //其他信息 //文字转换图片打印,但转换后数据太大 // builder.append(zplUtil.getCharPicture(productCodeVo.getItemname(),baseX,itemNameY,30,34,1)); // builder.append(zplUtil.getCharPicture(productCodeVo.getType(),baseX,typeY,30,34,1)); // builder.append(zplUtil.getCharPicture(productCodeVo.getManufacturer(),baseX,manufacturerY,30,34,1)); // builder.append("^FO").append(baseX).append(",").append(dateY).append("^A,").append(fontSize).append(",") // .append(fontSize).append("^FD").append(date).append("^FS"); builder.append("^FO").append(baseX).append(",").append(itemNameY).append("^A1N,").append(fontSize2) .append(",").append(fontSize2).append("^FD").append(productCodeVo.getItemname()).append("^FS"); builder.append("^FO").append(baseX).append(",").append(typeY).append("^A1N,").append(fontSize2).append(",") .append(fontSize2).append("^FD").append(productCodeVo.getType()).append("^FS"); builder.append("^FO").append(baseX).append(",").append(dateY).append("^A1N,").append(fontSize).append(",") .append(fontSize).append("^FD").append(date).append("^FS"); String manufacturer = productCodeVo.getManufacturer(); if (StringUtils.isBlank(manufacturer)){ throw new BusinessException("错误:生产厂家为空"); } builder.append("^FO").append(baseX).append(",").append(manufacturerY).append("^A1N,").append(fontSize2) .append(",").append(fontSize2).append("^FD").append(manufacturer.length()>16?manufacturer.substring(0,16):manufacturer).append("^FS"); if (manufacturer.length()>16){ builder.append("^FO").append(baseX).append(",").append(manufacturerY2).append("^A1N,").append(fontSize2) .append(",").append(fontSize2).append("^FD").append(manufacturer.substring(16)).append("^FS"); } builder.append("^FO").append(frameX).append(",").append(frameY).append("^GB").append(frameWidth) .append(",").append(frameHeight).append(",4,B,1^FS"); if (i % 2 != 0){ builder.append("^XZ"); } } return builder.toString(); } @Override public String generateOuterTag(List productCodeVos, UserInfo userInfo){ StringBuilder builder = new StringBuilder(); byte type = 2; ControlPrintParam controlPrintParam = controlPrintParamService.getParamsByUser(userInfo,type); for (int i = 0; i < productCodeVos.size(); i++){ ProductCodeVo productCodeVo = productCodeVos.get(i); if (productCodeVo == null || (StringUtils.isBlank(productCodeVo.getOrdercode())&& StringUtils.isBlank(productCodeVo.getItemcode()))){ if (i % 2 == 1){ builder.append("^XZ"); } builder.append("^XA").append("^XZ"); continue; } String code = productCodeVo.getOriginalcode(); if (code.length()!= 22){ continue; } String codePrefix = code.substring(0,19); String codeSuffix = code.substring(19); String title = "新疆专用:包装识别码"; String date = DateFormatUtils.format(productCodeVo.getCreateddate(), "yyyy/MM/dd"); int baseX = controlPrintParam.getLeftBaseX(); int titleY = controlPrintParam.getTitleY(); int barCodeWidth = controlPrintParam.getBarcodeWidth(); int barCodeWidthRatio = controlPrintParam.getBarcodeWidthRadio(); int barCodeHeight = controlPrintParam.getBarcodeHeight(); int barCodeY = controlPrintParam.getBarcodeY(); int qrCodeModel = controlPrintParam.getQrCodeModel(); int qrCodeMagnification = controlPrintParam.getQrCodeMagnification(); int qrX = controlPrintParam.getLeftQrX(); int qrY = controlPrintParam.getQrY(); int fontSize = controlPrintParam.getFontsize1(); int fontSize2 = controlPrintParam.getFontsize2(); int barCodeTextY = controlPrintParam.getBarcodeTextY(); int itemNameY = controlPrintParam.getItemNameY(); int typeY = controlPrintParam.getTypeY(); int dateY = controlPrintParam.getDateY(); int totalY = controlPrintParam.getTotalY(); int manufacturerY = controlPrintParam.getManufacturerY(); int manufacturerY2 = controlPrintParam.getManufacturerY2(); int darkness = controlPrintParam.getDarkness(); //左标签 if (i % 2 == 0){ //^XA 开始 ;^JMA 正常打印浓度 ;^SEE:GB18030.DAT^CW1,E:SIMSUN.FNT 支持中文编码 builder.append("^XA").append("^JMA").append("^MD").append(darkness).append("^CI28^SEE:GB18030.DAT^CW1,E:SIMSUN.TTF"); }else { baseX = controlPrintParam.getRightBaseX(); qrX = controlPrintParam.getRightQrX(); } //标签头 builder.append("^FO").append(baseX).append(",").append(titleY).append("^A1N,").append(fontSize2) .append("^FD").append(title).append(productCodeVo.getBoxrange()).append("^FS"); //条形码 builder.append("^BY").append(barCodeWidth).append(",").append(barCodeWidthRatio).append(",") .append(barCodeHeight).append("^FO").append(baseX-20).append(",").append(barCodeY) .append("^BCN,,N,N^FD").append(code).append("^FS"); //二维码 builder.append("^BQN,").append(qrCodeModel).append(",").append(qrCodeMagnification).append("^FO") .append(qrX).append(",").append(qrY).append("^FDLA,").append(code).append("^FS"); //条形码文字 builder.append("^FO").append(baseX).append(",").append(barCodeTextY).append("^A1,") .append(fontSize).append("^FD").append(codePrefix).append(" ").append(codeSuffix).append("^FS"); builder.append("^FO").append(baseX).append(",").append(itemNameY).append("^A1N,").append(fontSize2) .append(",").append(fontSize2).append("^FD").append(productCodeVo.getItemname()).append("^FS"); builder.append("^FO").append(baseX).append(",").append(typeY).append("^A1N,").append(fontSize2).append(",") .append(fontSize2).append("^FD").append(productCodeVo.getType()).append("^FS"); builder.append("^FO").append(baseX).append(",").append(dateY).append("^A1N,").append(fontSize).append(",") .append(fontSize).append("^FD").append(date).append("^FS"); builder.append("^FO").append(baseX).append(",").append(totalY).append("^A1N,").append(fontSize).append(",") .append(fontSize).append("^FD").append("总装药量:").append(productCodeVo.getExplosivecontent()).append("^FS"); builder.append("^FO").append(qrX).append(",").append(totalY).append("^A1N,").append(fontSize).append(",") .append(fontSize).append("^FD").append("箱含量:").append(productCodeVo.getBoxnumber()).append("^FS"); String manufacturer = productCodeVo.getManufacturer(); if (StringUtils.isBlank(manufacturer)){ throw new BusinessException("错误:生产厂家为空"); } builder.append("^FO").append(baseX).append(",").append(manufacturerY).append("^A1N,").append(fontSize2) .append(",").append(fontSize2).append("^FD").append(manufacturer.length()>16?manufacturer.substring(0,16):manufacturer).append("^FS"); if (manufacturer.length()>16){ builder.append("^FO").append(baseX).append(",").append(manufacturerY2).append("^A1N,").append(fontSize2) .append(",").append(fontSize2).append("^FD").append(manufacturer.substring(16)).append("^FS"); } if (i % 2 != 0){ builder.append("^XZ"); } } if (!builder.toString().endsWith("^XZ")){ builder.append("^XZ"); } return builder.toString(); } /** * @Description: 生成规律单号 * @date 2021/5/10 10:11 */ private String generateRegularCode() { //查询当日合同总数 int num = contractOrderInfoMapper.selectCountToday(); String numStr = num + 1 + ""; //超过3位 显示原位数据 不需要补0 if (numStr.length() >= 3) { return numStr; } //不超过则需要补0 //距离 int i = 3 - numStr.length(); return String.format("%03d", num + 1); } }