From 78a3ce6a5ec91ab2454cbe1be2ea07c1b91fa258 Mon Sep 17 00:00:00 2001 From: zhoujj <1549112868@qq.com> Date: Tue, 7 Jan 2025 09:27:33 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E9=A9=B1=E5=8A=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CartonLabelingMachineDeviceDriver.java | 16 +- .../material/MaterialController.java | 82 +++ .../material/MdBaseMaterialService.java | 57 ++ .../service/material/dto/MdBaseMaterial.java | 116 ++++ .../material/dto/MdBaseMaterialDto.java | 29 + .../dto/mapper/MdBaseMaterialMapper.java | 15 + .../dto/mapper/MdBaseMaterialMapper.xml | 20 + .../impl/MdBaseMaterialServiceImpl.java | 359 +++++++++++++ .../src/main/resources/log/ComPortUtil.xml | 34 ++ .../src/api/acs/order/mdBaseMaterial.js | 47 ++ .../device/driver/carton_labeling_machine.vue | 507 ++++++++++++++++++ .../acs/device/driver/primary_device.vue | 507 ++++++++++++++++++ .../src/views/acs/order/MaterialDialog.vue | 218 ++++++++ .../src/views/acs/order/UploadDialog.vue | 117 ++++ acs/nladmin-ui/src/views/acs/order/index.vue | 18 +- .../src/views/acs/order/material.vue | 353 ++++++++++++ .../src/views/acs/order/preview.vue | 101 ++++ 17 files changed, 2586 insertions(+), 10 deletions(-) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/material/MaterialController.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/MdBaseMaterialService.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterial.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterialDto.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.xml create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/impl/MdBaseMaterialServiceImpl.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/resources/log/ComPortUtil.xml create mode 100644 acs/nladmin-ui/src/api/acs/order/mdBaseMaterial.js create mode 100644 acs/nladmin-ui/src/views/acs/device/driver/carton_labeling_machine.vue create mode 100644 acs/nladmin-ui/src/views/acs/device/driver/primary_device.vue create mode 100644 acs/nladmin-ui/src/views/acs/order/MaterialDialog.vue create mode 100644 acs/nladmin-ui/src/views/acs/order/UploadDialog.vue create mode 100644 acs/nladmin-ui/src/views/acs/order/material.vue create mode 100644 acs/nladmin-ui/src/views/acs/order/preview.vue diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java index 52a70c7..bdd6df9 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java @@ -421,10 +421,16 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i String psdigits = null; Integer psdigits1 = 0; if (customer.contains("晶科")) { - psletters = bottle_number.substring(0, 18); - psdigits = bottle_number.substring(18, 23); + psletters = bottle_number.substring(0, 20); + psdigits = bottle_number.substring(20, 23); psdigits1 = Integer.parseInt(psdigits) - fbottle_number1; - + if(psdigits1>100){ + psdigits=String.valueOf(psdigits1); + }else if(psdigits1>=10){ + psdigits="0"+ psdigits1; + }else if(psdigits1>0&&psdigits1<10){ + psdigits="00"+ psdigits1; + } } if (customer.contains("晶澳")) { psletters = bottle_number.substring(0, bottle_number.length() - 5); @@ -459,12 +465,12 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i JSONObject options = printElement.getJSONObject("options"); if (options.containsKey("testData")) { if (options.get("title").equals("晶科二维码")) { - String number1 = psletters + psdigits1; + String number1 = psletters + psdigits; options.put("testData", number1); options.put("title", ""); printElement.put("options", options); } else if (options.get("testData").equals("瓶号")) { - String number1 = psletters + psdigits1; + String number1 = psletters + psdigits; options.put("title", number1); printElement.put("options", options); } else if (options.get("testData").equals("晶澳瓶号")) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/material/MaterialController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/material/MaterialController.java new file mode 100644 index 0000000..e4dee8c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/material/MaterialController.java @@ -0,0 +1,82 @@ +package org.nl.system.controller.material; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.system.service.material.MdBaseMaterialService; +import org.nl.system.service.material.dto.MdBaseMaterial; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.annotation.MultipartConfig; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Map; +import java.util.Set; + +@Slf4j +@RestController +@RequiredArgsConstructor +@MultipartConfig +@RequestMapping("/api/mdBaseMaterial") +public class MaterialController { + @Autowired + MdBaseMaterialService materialService; + @GetMapping + @Log("查询物料基础信息") + //@SaCheckPermission("@el.check('mdBaseMaterial:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(materialService.queryAll(whereJson,page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增物料基础信息") + //@SaCheckPermission("@el.check('mdBaseMaterial:add')") + public ResponseEntity create(@Validated @RequestBody MdBaseMaterial entity){ + materialService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改物料基础信息") + public ResponseEntity update(@Validated @RequestBody MdBaseMaterial entity){ + materialService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除物料基础信息") + //@SaCheckPermission("@el.check('mdBaseMaterial:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + materialService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/excelImport") + @Log("excel导入") + @SaIgnore + public ResponseEntity excelImport(@RequestParam("file") MultipartFile file) { + HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest(); + materialService.excelImport(file, request); + return new ResponseEntity<>(HttpStatus.OK); + } + @Log("导出眉山通威报表") + @GetMapping(value = "/doExport") + public void doExport(HttpServletResponse response) throws IOException { + materialService.doExport(response); + } + @Log("导出晶科报表") + @GetMapping(value = "/doExport1") + public void doExport1(HttpServletResponse response) throws IOException { + materialService.doExport1(response); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/MdBaseMaterialService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/MdBaseMaterialService.java new file mode 100644 index 0000000..2f5823b --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/MdBaseMaterialService.java @@ -0,0 +1,57 @@ +package org.nl.system.service.material; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.material.dto.MdBaseMaterial; +import org.nl.system.service.tickets.dto.TicketsDto; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Set; + + +public interface MdBaseMaterialService extends IService { + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(MdBaseMaterial entity); + + /** + * 编辑 + * @param entity / + */ + void update(MdBaseMaterial entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * excel导入 + * @param file + * @param request + */ + void excelImport(MultipartFile file, HttpServletRequest request); + + + void doExport(HttpServletResponse response) throws IOException; + + void doExport1(HttpServletResponse response) throws IOException; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterial.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterial.java new file mode 100644 index 0000000..5314ac1 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterial.java @@ -0,0 +1,116 @@ +package org.nl.system.service.material.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_base_material") +public class MdBaseMaterial { + /** + * 物料标识 + */ + @TableId(type = IdType.NONE) + private String material_id; + /** + * 客户 + */ + private String customer; + + /** + * 大型号 + */ + private String large_model; + /** + * 小型号 + */ + private String small_model; + /** + * 实发型号 + */ + private String production_materials; + /** + * 实发批次 + */ + private String actual_batch; + /** + * 批次号 + * + */ + private String batch_number; + /** + * 库存数量 + * + */ + private String inventory_qty; + /** + * 当天生产 + * + */ + private String product_qty; + /** + * 重量 + * + */ + private String weight; + /** + * 瓶身号 + * + */ + private String bottle_number; + /** + * 纸箱号 + * + */ + private String carton_number; + /** + * 纸箱装瓶数量 + * + */ + private String carton_qty; + /** + * 总罐数 + * + */ + private String sum_qty; + /** + * 备注 + */ + private String remark; + /** + * 是否启用 + */ + private Boolean is_used; + /** + * 是否删除 + */ + private Boolean is_delete; + /** + * 修改者 + */ + private String update_name; + /** + * 创建者 + */ + private String create_name; + /** + * 送货单号 + */ + private String shdnumber; + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private String create_time; + /** + * 修改时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private String update_time; +} + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterialDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterialDto.java new file mode 100644 index 0000000..d15313c --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/MdBaseMaterialDto.java @@ -0,0 +1,29 @@ +package org.nl.system.service.material.dto; + +import lombok.*; +import lombok.experimental.Accessors; + +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class MdBaseMaterialDto { + private String material_id; + private String customer; + private String large_model; + private String small_model; + private String remark; + private String production_materials; + private String actual_batch; + private String batch_number; + private String inventory_qty; + private String product_qty; + private String weight; + private String bottle_number; + private String carton_number; + private String carton_qty; + private String sum_qty; + private String shdnumber; +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.java new file mode 100644 index 0000000..9c6711d --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.java @@ -0,0 +1,15 @@ +package org.nl.system.service.material.dto.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.material.dto.MdBaseMaterial; + +import java.util.List; + +public interface MdBaseMaterialMapper extends BaseMapper { + //判断批次号和实发批次是否重复 + MdBaseMaterial isbatch(String batch_number,String actual_batch); + //眉山通威物料信息 + List mstwmaterials(); + //晶科物料信息 + List jkmaterials(); +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.xml b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.xml new file mode 100644 index 0000000..2428531 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/dto/mapper/MdBaseMaterialMapper.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/impl/MdBaseMaterialServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/impl/MdBaseMaterialServiceImpl.java new file mode 100644 index 0000000..c2c3c74 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/material/impl/MdBaseMaterialServiceImpl.java @@ -0,0 +1,359 @@ +package org.nl.system.service.material.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.utils.ConvertUtil; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.FileUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.language.LangProcess; +import org.nl.system.service.material.MdBaseMaterialService; +import org.nl.system.service.material.dto.MdBaseMaterial; +import org.nl.system.service.material.dto.MdBaseMaterialDto; +import org.nl.system.service.material.dto.mapper.MdBaseMaterialMapper; +import org.nl.system.service.tickets.dto.TicketsDto; +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 javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Slf4j +@Service +public class MdBaseMaterialServiceImpl extends ServiceImpl implements MdBaseMaterialService { + @Autowired + private MdBaseMaterialMapper mdBaseMaterialMapper; + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + Boolean is_used = ObjectUtil.isNotEmpty(whereJson.get("is_used")) + ? Boolean.valueOf(whereJson.get("is_used").toString()) : null; + String customer = ObjectUtil.isNotEmpty(whereJson.get("customer")) + ? whereJson.get("customer").toString() : null; + String production_materials = ObjectUtil.isNotEmpty(whereJson.get("production_materials")) + ? whereJson.get("production_materials").toString() : null; + String actual_batch = ObjectUtil.isNotEmpty(whereJson.get("actual_batch")) + ? whereJson.get("actual_batch").toString() : null; + String large_model = ObjectUtil.isNotEmpty(whereJson.get("large_model")) + ? whereJson.get("large_model").toString() : null; + String small_model=ObjectUtil.isNotEmpty(whereJson.get("small_model")) + ? whereJson.get("small_model").toString() :null; + String batch_number=ObjectUtil.isNotEmpty(whereJson.get("batch_number")) + ? whereJson.get("batch_number").toString() :null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.like(ObjectUtil.isNotEmpty(customer), MdBaseMaterial::getCustomer, customer) + .eq(ObjectUtil.isNotEmpty(large_model), MdBaseMaterial::getLarge_model, large_model) + .eq(ObjectUtil.isNotEmpty(production_materials), MdBaseMaterial::getProduction_materials, production_materials) + .eq(ObjectUtil.isNotEmpty(actual_batch), MdBaseMaterial::getActual_batch, actual_batch) + .eq(ObjectUtil.isNotEmpty(batch_number), MdBaseMaterial::getBatch_number, batch_number) + .eq(ObjectUtil.isNotEmpty(is_used), MdBaseMaterial::getIs_used, is_used) + .eq(ObjectUtil.isNotEmpty(small_model), MdBaseMaterial::getSmall_model, small_model); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + mdBaseMaterialMapper.selectPage(pages, lam); + return pages; + } + @Override + public void create(MdBaseMaterial entity) { + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setMaterial_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + mdBaseMaterialMapper.insert(entity); + } + @Override + public void update(MdBaseMaterial entity) { + MdBaseMaterial dto = mdBaseMaterialMapper.selectById(entity.getMaterial_id()); + if (dto == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_name(nickName); + entity.setUpdate_time(now); + mdBaseMaterialMapper.updateById(entity); + } + @Override + public void deleteAll(Set ids) { + // 真删除 + mdBaseMaterialMapper.deleteBatchIds(ids); + } + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request) { + if (file.isEmpty()) { + throw new BadRequestException(LangProcess.msg("error_nullPoint")); + } + Long currentUserId = Long.valueOf(SecurityUtils.getCurrentUserId()); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + // 1.获取上传文件输入流 + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (Exception e) { + e.printStackTrace(); + } +// WQLObject wo = WQLObject.getWQLObject("acs_device"); + + // 调用用 hutool 方法读取数据 默认调用第一个sheet + ExcelReader excelReader = ExcelUtil.getReader(inputStream); + // 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 + List> read = excelReader.read(1, excelReader.getRowCount()); + + // 循环获取的数据 + for (int i = 0; i < read.size(); i++) { + List list = read.get(i); + JSONObject param = new JSONObject(); + String customer = list.get(1).toString(); + if(StrUtil.isBlank(customer)){ + continue; + } + String production_materials = list.get(2).toString(); + String actual_batch = list.get(3).toString(); + String inventory_qty=list.get(4).toString(); + String product_qty=list.get(5).toString(); + String large_model = list.get(9).toString(); + String small_model = list.get(10).toString(); + String batch_number = list.get(11).toString(); + String weight = list.get(12).toString(); + String remark = list.get(14).toString(); + String bottle_number=null; + String carton_number=null; + String shdnumber=list.get(17).toString();; + try { + bottle_number = list.get(18).toString(); + }catch (Exception var17){ + throw new BadRequestException("当前客户"+list.get(1).toString()+"所在行瓶盖号为空"); + } + try { + carton_number = list.get(19).toString(); + }catch (Exception var17){ + throw new BadRequestException("当前客户"+list.get(1).toString()+"所在行纸箱号为空"); + } + String carton_qty=list.get(21).toString(); + String sum_qty=list.get(20).toString(); + MdBaseMaterial mdBaseMaterial=new MdBaseMaterial(); +// mdBaseMaterial=mdBaseMaterialMapper.isbatch(batch_number,actual_batch); +// if(mdBaseMaterial!=null){ +// continue; +// } + param.put("material_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("customer",customer); + param.put("production_materials",production_materials); + param.put("actual_batch",actual_batch); + param.put("inventory_qty",inventory_qty); + param.put("product_qty",product_qty); + param.put("large_model",large_model); + param.put("small_model",small_model); + param.put("batch_number",batch_number); + param.put("weight",weight); + param.put("remark",remark); + param.put("shdnumber",shdnumber); + param.put("bottle_number",bottle_number); + param.put("carton_number",carton_number); + param.put("carton_qty",carton_qty); + param.put("sum_qty",sum_qty); + MdBaseMaterial entity = ConvertUtil.convert(param, MdBaseMaterial.class); + mdBaseMaterialMapper.insert(entity); + } + } + @Override + public void doExport(HttpServletResponse response) throws IOException { + List mstwmaterials=mdBaseMaterialMapper.mstwmaterials(); + LocalDate currentDate = LocalDate.now(); + List> list = new ArrayList<>(); + for(MdBaseMaterial MdBaseMaterial:mstwmaterials){ + //该批次数量 + Integer pznum=Integer.parseInt(MdBaseMaterial.getSum_qty()); + if(pznum==0){ + continue; + } + Integer carton_qty=Integer.parseInt(MdBaseMaterial.getCarton_qty()); + Integer real_carton_qty=0; + Integer real_carton_number=0;//当前箱号 +// Integer zxnumber=pznum/carton_qty; + String bottle_number=MdBaseMaterial.getBottle_number(); + String carton_number=MdBaseMaterial.getCarton_number(); + String large_model=MdBaseMaterial.getLarge_model(); + String small_model=MdBaseMaterial.getSmall_model(); + String batch_number=MdBaseMaterial.getBatch_number(); + Integer weishu=MdBaseMaterial.getSum_qty().length(); + String psletters = bottle_number.substring(0,4); + String psdigits = bottle_number.substring(4,15); + String year=bottle_number.substring(3,5); + String month=bottle_number.substring(5,7); + String day=bottle_number.substring(7,9); + String zxletters = carton_number.replaceAll("\\d+$", ""); // 匹配并去掉末尾的数字 + String zxdigits = extractNumberAfterLastLetter(carton_number); // 匹配并取出末尾的数字部分 + //总纸箱数 + Integer sum_carton1 = (pznum+carton_qty-1)/carton_qty; + for(int i=0;i map = new LinkedHashMap<>(); + if(real_carton_qty12){ + month1=month1-12; + } + map.put("有效日期(yyyy/MM/dd)","20"+year+"/"+month+"/"+day); + // 获取当前日期 + LocalDate currentDate1 = LocalDate.now(); + + // 定义所需的日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + + // 格式化当前日期 + String formattedDate = currentDate1.format(formatter); + map.put("发货日期(yyyy/MM/dd)",formattedDate); + list.add(map); + } + } + FileUtil.downloadExcel(list, response); + } + @Override + public void doExport1(HttpServletResponse response) throws IOException { + List jkmaterials=mdBaseMaterialMapper.jkmaterials(); + LocalDate currentDate = LocalDate.now(); + List> list = new ArrayList<>(); + for(MdBaseMaterial MdBaseMaterial:jkmaterials){ + Integer pzweight=Integer.parseInt(MdBaseMaterial.getWeight()); + Integer pznum=Integer.parseInt(MdBaseMaterial.getSum_qty()); + if(pznum==0){ + continue; + } + + Integer carton_qty=Integer.parseInt(MdBaseMaterial.getCarton_qty()); + Integer real_carton_qty=0; + Integer real_carton_number=0;//当前箱号 + //单重 + Integer wt=0; + //整箱总重 + Integer wtsum=0; + if(pzweight.equals(pznum)){ + wt=1; + wtsum=wt*carton_qty; + }else{ + wt=2; + wtsum=wt*carton_qty; + } +// Integer zxnumber=pznum/carton_qty; + String bottle_number=MdBaseMaterial.getBottle_number(); + String carton_number=MdBaseMaterial.getCarton_number(); + String large_model=MdBaseMaterial.getLarge_model(); + String small_model=MdBaseMaterial.getSmall_model(); + String batch_number=MdBaseMaterial.getBatch_number(); + String customer=MdBaseMaterial.getCustomer(); + String psletters = bottle_number.substring(0,20); + String psdigits = bottle_number.substring(20,23); + String zxletters = carton_number.substring(0,18); + String zx1 = carton_number.substring(18,20); + String zx2 = carton_number.substring(20,23); + String zxdigits = carton_number.substring(23,33); + //总纸箱数 + Integer sum_carton1 = (pznum+carton_qty-1)/carton_qty; + for(int i=0;i map = new LinkedHashMap<>(); + if(real_carton_qty(sum_carton1-1)*carton_qty-1) { + map.put("托号(必填)", zxletters + zx1+zx2+real_zxdigits1); + map.put("箱号(必填)", zxletters + zx1+zx2+real_zxdigits1); + }else { + if(wtsum>9) { + map.put("托号(必填)", zxletters + wtsum + zx2 + real_zxdigits1); + map.put("箱号(必填)", zxletters + wtsum + zx2 + real_zxdigits1); + }else{ + map.put("托号(必填)", zxletters + "0" + wtsum + zx2 + real_zxdigits1); + map.put("箱号(必填)", zxletters + "0" + wtsum + zx2 + real_zxdigits1); + } + } + Integer real_psdigits=Integer.parseInt(psdigits)+i-pznum+1; + if(real_psdigits>=100){ + map.put("包号(选填)",psletters+real_psdigits); + } else if(real_psdigits>=10){ + map.put("包号(选填)",psletters+"0"+real_psdigits); + }else if(real_psdigits>0){ + map.put("包号(选填)",psletters+"00"+real_psdigits); + } + if(wt==1){ + map.put("包实装货物数","1"); + }else if(wt==2){ + if(i==pznum-1&&pzweight % 2 == 1 ){ + map.put("包实装货物数","1"); + } + else{ + map.put("包实装货物数","2"); + } + } + map.put("批号",small_model+"-"+batch_number); + map.put("发运数量",String.valueOf(pzweight)); + map.put("客户",customer); + list.add(map); + } + } + FileUtil.downloadExcel(list, response); + } + public static String extractNumberAfterLastLetter(String input) { + // 正则表达式:匹配最后一个字母后面的数字 + Pattern pattern = Pattern.compile("[a-zA-Z]([0-9]+)$"); + Matcher matcher = pattern.matcher(input); + + if (matcher.find()) { + return matcher.group(1); // 返回匹配的数字部分 + } + + return ""; // 如果没有匹配到数字,返回空字符串 + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/log/ComPortUtil.xml b/acs/nladmin-system/nlsso-server/src/main/resources/log/ComPortUtil.xml new file mode 100644 index 0000000..1bcf521 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/resources/log/ComPortUtil.xml @@ -0,0 +1,34 @@ + + + + + + + + + + ${LOG_HOME}/ComPortUtil/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + + diff --git a/acs/nladmin-ui/src/api/acs/order/mdBaseMaterial.js b/acs/nladmin-ui/src/api/acs/order/mdBaseMaterial.js new file mode 100644 index 0000000..84bd1de --- /dev/null +++ b/acs/nladmin-ui/src/api/acs/order/mdBaseMaterial.js @@ -0,0 +1,47 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/mdBaseMaterial', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/mdBaseMaterial/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/mdBaseMaterial', + method: 'put', + data + }) +} + +export function synchronize(data) { + return request({ + url: 'api/mdBaseMaterial/synchronize', + method: 'post', + data + }) +} +export function excelImport(data) { + return request({ + url: 'api/mdBaseMaterial/excelImport', + method: 'post', + data + }) +} +export function doExport() { + return request({ + url: 'api/mdBaseMaterial/doExport', + method: 'post', + }) +} +export default { add, edit, del, synchronize ,excelImport ,doExport } diff --git a/acs/nladmin-ui/src/views/acs/device/driver/carton_labeling_machine.vue b/acs/nladmin-ui/src/views/acs/device/driver/carton_labeling_machine.vue new file mode 100644 index 0000000..18e3172 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/carton_labeling_machine.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/acs/nladmin-ui/src/views/acs/device/driver/primary_device.vue b/acs/nladmin-ui/src/views/acs/device/driver/primary_device.vue new file mode 100644 index 0000000..648974d --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/primary_device.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/acs/nladmin-ui/src/views/acs/order/MaterialDialog.vue b/acs/nladmin-ui/src/views/acs/order/MaterialDialog.vue new file mode 100644 index 0000000..7645366 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/order/MaterialDialog.vue @@ -0,0 +1,218 @@ + + + + + + \ No newline at end of file diff --git a/acs/nladmin-ui/src/views/acs/order/UploadDialog.vue b/acs/nladmin-ui/src/views/acs/order/UploadDialog.vue new file mode 100644 index 0000000..2356ef6 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/order/UploadDialog.vue @@ -0,0 +1,117 @@ + + + + diff --git a/acs/nladmin-ui/src/views/acs/order/index.vue b/acs/nladmin-ui/src/views/acs/order/index.vue index eae7bca..89dc02b 100644 --- a/acs/nladmin-ui/src/views/acs/order/index.vue +++ b/acs/nladmin-ui/src/views/acs/order/index.vue @@ -40,7 +40,7 @@ + v-permission="['admin','task:add']" class="filter-item" size="mini" type="primary" @@ -170,6 +170,12 @@ + + + + + + @@ -213,7 +219,7 @@ {{ item.template_name }} @@ -234,8 +240,8 @@ @@ -247,6 +253,8 @@ + + @@ -649,7 +657,7 @@ export default { }, 1000) // 5000 毫秒,即 5 秒钟 }, editBtn() { - // this.form=crudTask.query(ticket.ticket_id) + this.isDisabled = true // if (!this.isFormChanged) { // // 如果表单没有变化,不进行提交 diff --git a/acs/nladmin-ui/src/views/acs/order/material.vue b/acs/nladmin-ui/src/views/acs/order/material.vue new file mode 100644 index 0000000..cff3c92 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/order/material.vue @@ -0,0 +1,353 @@ + + + + + + \ No newline at end of file diff --git a/acs/nladmin-ui/src/views/acs/order/preview.vue b/acs/nladmin-ui/src/views/acs/order/preview.vue new file mode 100644 index 0000000..6ac8db5 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/order/preview.vue @@ -0,0 +1,101 @@ + + + +