diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java index a52141b4..641ec5df 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext_manage.acs.service.impl.AcsToWmsServiceImpl; +import org.nl.wms.scheduler_manage.service.extendtask.Engrave.EngraveSendEmpTask; import org.nl.wms.scheduler_manage.service.extendtask.SpeMachinery.SpeEmpTask; import org.nl.wms.scheduler_manage.service.extendtask.SpeMachinery.SpeFullTask; import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask; @@ -35,6 +36,7 @@ public class ConventConfig implements SmartLifecycle { AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_FULL, SpringContextHolder.getBean(WashSendMaterialTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_EMP, SpringContextHolder.getBean(WashCallEmptyTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_FULL_ERROR, SpringContextHolder.getBean(WashSendMaterialQZTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_PLOTTER_EMP, SpringContextHolder.getBean(EngraveSendEmpTask.class)); System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size()); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/controller/vehicle/MdPbBucketrecordController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/controller/vehicle/MdPbBucketrecordController.java index e5cbb117..957c900e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/controller/vehicle/MdPbBucketrecordController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/controller/vehicle/MdPbBucketrecordController.java @@ -2,19 +2,20 @@ package org.nl.wms.masterdata_manage.controller.vehicle; import io.swagger.annotations.ApiOperation; +import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.RedissonUtils; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -38,5 +39,16 @@ public class MdPbBucketrecordController { public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { return new ResponseEntity<>(iMdPbBucketrecordService.queryAll(whereJson,page), HttpStatus.OK); } + + + @PostMapping("/excelImport") + @Log("导入组盘信息") + //("查询桶记录表") + public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) { + RedissonUtils.lock(() -> { + iMdPbBucketrecordService.excelImport(file, request, response); + }, "组盘信息导入", null); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/IMdPbBucketrecordService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/IMdPbBucketrecordService.java index e73d8b30..2ee3d38b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/IMdPbBucketrecordService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/IMdPbBucketrecordService.java @@ -4,7 +4,10 @@ import com.alibaba.fastjson.JSONObject; import org.nl.common.domain.query.PageQuery; import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -27,4 +30,14 @@ public interface IMdPbBucketrecordService extends IService { Object queryAll(Map whereJson, PageQuery page); void createBucke(MdPbBucketrecord dao); + + /** + * 导入组盘信息 + * @param file + * @param request + * @param response + */ + void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response); + + List getMstList(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java index d1d3b351..c66c1dae 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java @@ -6,32 +6,36 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import lombok.experimental.SuperBuilder; /** *

- * 桶记录表 + * 箱记录表:存储物料跟托盘的关系 *

* * @author generator * @since 2023-05-10 */ @Data -@Builder +@SuperBuilder @EqualsAndHashCode(callSuper = false) @TableName("md_pb_bucketrecord") public class MdPbBucketrecord implements Serializable { + public MdPbBucketrecord() { } + private static final long serialVersionUID = 1L; /** * 桶记录标识 */ @TableId - private Long bucket_record_id; + private String bucket_record_id; /** * 桶唯一标识 @@ -43,10 +47,33 @@ public class MdPbBucketrecord implements Serializable { */ private String storagevehicle_type; + /** + * 销售单 + */ + private String sale_code; + /** + * 合同号 + */ + private String contract_code; + + /** + * 销售单行号 + */ + private Integer seq_no; + /** * 物料标识 */ private String material_id; + /** + * 物料标识 + */ + private String material_code; + + /** + * 物料规格 + */ + private String material_spec; /** * 批次 @@ -71,17 +98,22 @@ public class MdPbBucketrecord implements Serializable { /** * 数量计量单位标识 */ - private Long qty_unit_id; + private String qty_unit_id; /** * 数量计量单位名称 */ private String qty_unit_name; + /** + * 物料单重 + */ + private String unit_weight; + /** * 数量 */ - private BigDecimal storage_qty; + private String storage_qty; /** * 顺序号 @@ -101,17 +133,18 @@ public class MdPbBucketrecord implements Serializable { /** * 打印次数 */ - private BigDecimal print_times; + private Integer print_times; /** * 状态 + * @see org.nl.wms.storage_manage.IOSEnum.BILL_STATUS; */ private String status; /** * 创建人 */ - private Long create_id; + private String create_id; /** * 创建人姓名 @@ -136,7 +169,7 @@ public class MdPbBucketrecord implements Serializable { /** * 组盘人 */ - private Long makeup_optid; + private String makeup_optid; /** * 组盘人姓名 @@ -151,7 +184,7 @@ public class MdPbBucketrecord implements Serializable { /** * 入库人 */ - private Long instor_optid; + private String instor_optid; /** * 入库人姓名 @@ -166,7 +199,7 @@ public class MdPbBucketrecord implements Serializable { /** * 出库人 */ - private Long outstor_optid; + private String outstor_optid; /** * 出库人姓名 @@ -181,7 +214,7 @@ public class MdPbBucketrecord implements Serializable { /** * 入立库人 */ - private Long instor_optid2; + private String instor_optid2; /** * 入立库人姓名 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/MdPbBucketrecordMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/MdPbBucketrecordMapper.java index 64104f97..cd0b7d0f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/MdPbBucketrecordMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/MdPbBucketrecordMapper.java @@ -17,4 +17,6 @@ import java.util.Map; public interface MdPbBucketrecordMapper extends BaseMapper { List queryAll(Map map); + + List getMstList(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml index 7456c19c..d0f56a4f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml @@ -5,8 +5,8 @@ SELECT re.*, ma.material_name, - ma.material_code - + ma.material_code, + ma.material_spec FROM MD_PB_BucketRecord re LEFT JOIN md_me_materialbase ma ON ma.material_id = re.material_id @@ -29,4 +29,10 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java index d63355d7..3ed9a285 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java @@ -1,15 +1,25 @@ package org.nl.wms.masterdata_manage.service.vehicle.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; import org.nl.wms.masterdata_manage.MasterEnum; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; @@ -18,14 +28,25 @@ import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure; import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.IVTEnum; +import org.nl.wms.system_manage.service.user.dao.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.lang.reflect.Field; import java.math.BigDecimal; -import java.util.List; -import java.util.Map; +import java.math.RoundingMode; +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** *

@@ -38,10 +59,14 @@ import java.util.Map; @Service public class MdPbBucketrecordServiceImpl extends ServiceImpl implements IMdPbBucketrecordService { + private static Map Excel_Item = MapOf.of(0,"storagevehicle_code",1,"sale_code",2,"contract_code",3,"material_code",8,"storage_qty",9,"bucketunique"); @Autowired protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具服务 + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Override public Object queryAll(Map whereJson, PageQuery pageQuery) { Page page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize()); @@ -58,24 +83,93 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl> read = excelReader.read(); + List data = new ArrayList<>(); + row: + for (int i = 4; i < read.size(); i++) { + if (CollectionUtils.isEmpty(read.get(i))){ break; } + MdPbBucketrecord mdPbBucketrecord = new MdPbBucketrecord(); + if (StringUtils.isEmpty(String.valueOf(read.get(i).get(0)))){ + break row; + } + for (int i1 = 0; i1 < read.get(i).size(); i1++) { + Object item = read.get(i).get(i1); + String s = Excel_Item.get(i1); + if (s!=null){ + Class bucket = MdPbBucketrecord.class; + Field field = bucket.getDeclaredField(s); + field.setAccessible(true); + field.set(mdPbBucketrecord,String.valueOf(item)); + } + } + data.add(mdPbBucketrecord); + } + Set collect = data.stream().map(MdPbBucketrecord::getMaterial_code).collect(Collectors.toSet()); + List materials = materialbaseService.list(new QueryWrapper().in("material_code", collect)); + if (materials.size()!=collect.size()){ + List collect1 = materials.stream().map(MdMeMaterialbase::getMaterial_code).collect(Collectors.toList()); + String notIn = collect.stream().filter(a -> !collect1.contains(a)).collect(Collectors.joining(",")); + throw new BadRequestException("当前物料编号不存在:"+notIn); + } + Map materialMap = materials.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v), HashMap::putAll); + String now = DateUtil.now(); + String pcsn = DateUtil.today(); + + for (MdPbBucketrecord datum : data) { + datum.setBucket_record_id(IdUtil.getStringId()); + String bucketunique = datum.getBucketunique(); + if (StringUtils.isEmpty(bucketunique)){ + datum.setBucketunique(CodeUtil.getNewCode("PRODUCT_BUCKET_CODE")); + } + datum.setCreate_id(SecurityUtils.getCurrentUserId()); + datum.setCreate_name(SecurityUtils.getCurrentNickName()); + datum.setCreate_time(now); + datum.setMaterial_id(materialMap.get(datum.getMaterial_code()).getMaterial_id()); + datum.setMaterial_spec(materialMap.get(datum.getMaterial_code()).getMaterial_spec()); + datum.setPcsn(pcsn); + datum.setStoragevehicle_type("1"); + datum.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); + datum.setIs_active("1"); + datum.setQuality_scode(IVTEnum.QUALITY_SCODE.code("待检品")); + datum.setPrint_times(0); + datum.setQty_unit_id("16"); + datum.setQty_unit_name("个/只"); + datum.setStatus(MasterEnum.BOX_STATUS.code("生成")); + } + this.saveBatch(data); + }catch (Exception ex){ + throw new BadRequestException(ex.getMessage()); + } + } + + @Override + public List getMstList() { + return this.baseMapper.getMstList(); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/PdaProductIosController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/PdaProductIosController.java index 9441bbe3..a168cc22 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/PdaProductIosController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/PdaProductIosController.java @@ -2,19 +2,27 @@ package org.nl.wms.pda_manage.pda.controller; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import org.nl.common.utils.MapOf; -import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; -import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.MasterEnum; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService; import org.nl.wms.scheduler_manage.service.task.PointService; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.pda.service.PdaStCpInService; import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -36,15 +44,16 @@ import java.util.*; public class PdaProductIosController { @Autowired - private IStIvtStructivtCpService productInService; - @Autowired - private IStIvtStructattrService structivtService; - @Autowired - private IStIvtSectattrService sectattrService; + private IStIvtBsrealstorattrService storattrService; // 实物属性服务 + @Autowired private IMpsSaleOrderService saleOrderService; @Autowired private PointService pointService; + @Autowired + private IMdPbBucketrecordService bucketrecordService; + @Autowired + private PdaStCpInService pdaStCpInService; @PostMapping("/order") @Log("根据订单获取订单物料信息") @@ -81,4 +90,48 @@ public class PdaProductIosController { String type = param.getString("type"); return new ResponseEntity<>(pointService.selectPoint(type),HttpStatus.OK); } + + @PostMapping("/bucket") + @Log("根据订单获取订单物料信息") + //("根据订单获取订单物料信息") + public ResponseEntity bucket(@RequestBody JSONObject param) { + String storagevehicleCode = param.getString("storagevehicle_code"); + List mstList= new ArrayList<>(); + if (StringUtils.isEmpty(storagevehicleCode)){ + mstList = bucketrecordService.getMstList(); + }else { + List> maps = bucketrecordService.listMaps(new QueryWrapper() + .eq("storagevehicle_code", storagevehicleCode).eq("status", "1")); + int i=1; + for (Map map : maps) { + map.put("sqe_on",i); + i++; + } + mstList=maps; + } + return new ResponseEntity<>(TableDataInfo.build(mstList),HttpStatus.OK); + } + + @PostMapping("/stor") + public ResponseEntity stor() { + List storList = storattrService.list( + new QueryWrapper().lambda() + .eq(StIvtBsrealstorattr::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(StIvtBsrealstorattr::getStor_id, IOSEnum.STOR_CODE.code("成品库")) + ); + return new ResponseEntity<>(TableDataInfo.build(storList),HttpStatus.OK); + } + + @PostMapping("/batchin") + @Log("批量入库") + //("新增入库单") + public ResponseEntity batchin(@RequestBody JSONArray whereJson) { + pdaStCpInService.confirmIn(null); + return new ResponseEntity<>(MapOf.of("message","创建成功","status", HttpStatus.OK.value()),HttpStatus.OK); + } + + @PostMapping("/iosTasks") + public ResponseEntity iosTasks(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(MapOf.of("message","创建成功","status", HttpStatus.OK.value()),HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java index 104a7fec..9e7a5c15 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.extension.api.R; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.RedissonUtils; @@ -153,6 +154,7 @@ public class TmpKZController { return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @PostMapping("/kz/submitkz") + @Log("提交刻字任务") @SaIgnore public ResponseEntity submitkz(@RequestBody JSONArray param){ engraveScheduleService.createTask(param); @@ -178,10 +180,25 @@ public class TmpKZController { for (Map map : list) { map.put("material_spec",materialMap.get(map.get("material_id")).getMaterial_spec()); map.put("material_code",materialMap.get(map.get("material_id")).getMaterial_code()); + map.put("create_time",map.get("create_time").toString()); } } return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK); } + @PostMapping("/kz/sendVechile") + @Log("手动送空框") + @SaIgnore + public ResponseEntity sendVechile(@RequestBody JSONObject param){ + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/kz/resend") + @Log("刻字任务重新下发") + @SaIgnore + public ResponseEntity resend(@RequestBody JSONObject param){ + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveTranSportTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveTranSportTask.java index 28de1244..dab1fe80 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveTranSportTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveTranSportTask.java @@ -94,9 +94,9 @@ public class EngraveTranSportTask extends AbstractAcsTask { String[] to_sort_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; String[] to_devices_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; String[] to_weight_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; - int i=1; + int i=0; for (Map.Entry entry : qtyArr.entrySet()) { - to_sort_array[i] = String.valueOf(i); + to_sort_array[i] = String.valueOf(i+1); to_devices_array[i] = String.valueOf(entry.getKey()); to_weight_array[i] = String.valueOf(new BigDecimal(entry.getValue()).intValue()); i++; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java index a471ff45..df412aee 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java @@ -72,8 +72,8 @@ public class WashMachineryTask extends AbstractAcsTask { if (StringUtils.isNotEmpty(param.getString("in_pcsn"))){ query.eq("task_code",param.getString("in_pcsn")); } - if (StringUtils.isNotEmpty(param.getString("task_id"))){ - query.eq("task_id",param.getString("task_id")); + if (StringUtils.isNotEmpty(param.getString("task_code"))){ + query.eq("task_code",param.getString("task_code")); } SchBaseTask taskDao = taskService.getOne(query); // 更新任务状态为完成 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStCpInService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStCpInService.java index 6b433e0f..7109d64e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStCpInService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStCpInService.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.pda.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.common.domain.query.PageQuery; @@ -39,7 +40,7 @@ public interface PdaStCpInService { */ Object getMaterial(JSONObject whereJson, PageQuery page); - JSONObject getMaterial(JSONObject whereJson); + Object getMaterial(JSONObject whereJson); /** * 确认入库 @@ -48,6 +49,13 @@ public interface PdaStCpInService { */ JSONObject confirmIn(JSONObject whereJson); + /** + * 批量入库 + * @param whereJson + * @return + */ + JSONObject batchConfirmIn(JSONArray whereJson); + /** * 成品入库查询 * @param whereJson / diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java index cebf03b5..d8497099 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java @@ -1,38 +1,65 @@ package org.nl.wms.storage_manage.pda.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.MasterEnum; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService; +import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.IVTEnum; import org.nl.wms.storage_manage.pda.PDAEnum; import org.nl.wms.storage_manage.pda.service.PdaStCpInService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; +import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dao.StIfDeliveryorderCp; +import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; +import java.util.function.Consumer; +import java.util.stream.Collectors; /** *

@@ -56,6 +83,8 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { @Autowired private ISchBasePointService iSchBasePointService; // 点位服务 + @Autowired + private IStIvtStructivtCpService iStIvtStructivtCpService; @Autowired private IMpsSaleOrderService iMpsSaleOrderService; // 订单服务 @@ -68,6 +97,10 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { @Autowired protected IStIvtIostorinvdisCpService iostorinvdisCpService; // 成品出入库分配表服务 + @Autowired + protected IMdPbBucketrecordService bucketrecordService; // 成品出入库分配表服务 + @Autowired + protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService; @Override public JSONObject getBcpStor() { @@ -123,15 +156,12 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { } @Override - public JSONObject getMaterial(JSONObject whereJson) { + public Object getMaterial(JSONObject whereJson) { List list = iMpsSaleOrderService.getPdaMaterial(whereJson); for (Map map : list) { map.put("create_time",map.get("plandeliver_date")); } - JSONObject result = new JSONObject(); - result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); - result.put("message", "查询成功"); - return result; + return TableDataInfo.build(list); } @Override @@ -191,6 +221,311 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { return result; } + @Override + @Transactional + public JSONObject batchConfirmIn(JSONArray arr) { + List stuctList = structattrService.list( + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStor_id, IOSEnum.STOR_CODE.code("成品库")) + .eq(StIvtStructattr::getSect_id, IOSEnum.SECT_CODE.code("成品库区")) + .eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStoragevehicle_code, "") + .eq(StIvtStructattr::getIs_emptyvehicle, false) + .orderByAsc(StIvtStructattr::getStruct_code).last("limit " + arr.size())); + if (stuctList.size() rows = bucketrecordService.listByIds(Arrays.asList(item.getString("bucket_record_id").split(","))); + bucketrecordService.update(new UpdateWrapper() + .set("status", MasterEnum.BOX_STATUS.code("组盘")) + .set("instor_optid", SecurityUtils.getCurrentUserId()) + .set("instor_optname", SecurityUtils.getCurrentNickName()) + .set("instor_time", DateUtil.now()) + .in("bucket_record_id", Arrays.asList(item.getString("bucket_record_id").split(",")))); + //跟新订单 + MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(new QueryWrapper().eq("sale_code", rows.get(0).getSale_code())); + if (orderDao!=null){ + orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交")); + iMpsSaleOrderService.updateById(orderDao); + } + StIvtIostorinvCp stIvtIostorinvCp = new StIvtIostorinvCp(); + 入库单主表: { + stIvtIostorinvCp.setIostorinv_id(org.nl.common.utils.IdUtil.getStringId()); + stIvtIostorinvCp.setBill_code(CodeUtil.getNewCode("IO_CODE")); + stIvtIostorinvCp.setIo_type(IOSEnum.IO_TYPE.code("入库")); + stIvtIostorinvCp.setBuss_type(item.getString("bill_code")); + stIvtIostorinvCp.setBill_type(stIvtIostorinvCp.getBuss_type()); + stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + stIvtIostorinvCp.setCreate_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setCreate_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setCreate_time(new Date()); + stIvtIostorinvCp.setIs_delete(false); + stIvtIostorinvCp.setSysdeptid("111"); + stIvtIostorinvCp.setBiz_date(pcsn); + stIvtIostorinvCp.setStor_id(IOSEnum.STOR_CODE.code("成品库")); + stIvtIostorinvCp.setStor_code(structattr.getStor_code()); + stIvtIostorinvCp.setStor_name(structattr.getStor_name()); + stIvtIostorinvCp.setProduct_area("A1"); + stIvtIostorinvCp.setTotal_qty(new BigDecimal(rows.stream().mapToInt(a -> Integer.valueOf(a.getStorage_qty())).sum())); + stIvtIostorinvCp.setDetail_count(rows.size()); + } + iStIvtIostorinvCpService.save(stIvtIostorinvCp); + int seq_no = 0; + List invdtl = new ArrayList<>(); + List invdisdtl = new ArrayList<>(); + List invdis = new ArrayList<>(); + //分配i + for (MdPbBucketrecord row : rows) { + String iostorinvdis_id = IdUtil.getStringId(); + + StIvtIostorinvdtlCp iostorinvdtlCp = new StIvtIostorinvdtlCp(); + StIvtIostorinvdisdtlCp iostorinvdisdtlCp = new StIvtIostorinvdisdtlCp(); + StIvtIostorinvdisCp iostorinvdisCp = new StIvtIostorinvdisCp(); + 入库明细: { + iostorinvdtlCp.setBase_bill_code(row.getSale_code()); + iostorinvdtlCp.setBase_bill_table(String.valueOf(row.getSeq_no())); + iostorinvdtlCp.setBase_billdtl_id(orderDao == null ? "" : orderDao.getSale_id()); + iostorinvdtlCp.setBase_bill_type(orderDao == null ? "" : orderDao.getSale_type()); + iostorinvdtlCp.setMaterial_id(row.getMaterial_id()); + iostorinvdtlCp.setPlan_qty(new BigDecimal(row.getStorage_qty())); + iostorinvdtlCp.setQty_unit_id(row.getQty_unit_id()); + iostorinvdtlCp.setQty_unit_name(row.getQty_unit_name()); + iostorinvdtlCp.setUnit_weight(new BigDecimal(row.getUnit_weight())); + iostorinvdtlCp.setIostorinv_id(stIvtIostorinvCp.getIostorinv_id()); + iostorinvdtlCp.setIostorinvdtl_id(IdUtil.getStringId()); + iostorinvdtlCp.setSeq_no(seq_no + 1); + iostorinvdtlCp.setPcsn(pcsn); + iostorinvdtlCp.setIs_active(true); + iostorinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); + iostorinvdtlCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + iostorinvdtlCp.setReal_qty(iostorinvdtlCp.getPlan_qty()); + iostorinvdtlCp.setUnassign_qty(iostorinvdtlCp.getPlan_qty()); + invdtl.add(iostorinvdtlCp); + } + 分配明细: { + iostorinvdisdtlCp.setIostorinv_id(iostorinvdtlCp.getIostorinv_id()); + iostorinvdisdtlCp.setIostorinvdtl_id(iostorinvdtlCp.getIostorinvdtl_id()); + iostorinvdisdtlCp.setIostorinvdis_id(iostorinvdis_id); + iostorinvdisdtlCp.setIostorinvdisdtl_id(IdUtil.getStringId()); + iostorinvdisdtlCp.setSeq_no(new BigDecimal(1)); + iostorinvdisdtlCp.setMaterial_id(iostorinvdtlCp.getMaterial_id()); + iostorinvdisdtlCp.setPcsn(pcsn); + iostorinvdisdtlCp.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品")); + iostorinvdisdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); + iostorinvdisdtlCp.setIs_active(true); + iostorinvdisdtlCp.setStoragevehicle_code(row.getStoragevehicle_code()); + iostorinvdisdtlCp.setBucketunique(row.getBucketunique()); + iostorinvdisdtlCp.setQty_unit_id(row.getQty_unit_id()); + iostorinvdisdtlCp.setQty_unit_name(row.getQty_unit_name()); + iostorinvdisdtlCp.setReal_qty(new BigDecimal(row.getStorage_qty())); + invdisdtl.add(iostorinvdisdtlCp); + } + 分配:{ + iostorinvdisCp.setIostorinvdis_id(iostorinvdis_id); + iostorinvdisCp.setIostorinv_id(stIvtIostorinvCp.getIostorinv_id()); + iostorinvdisCp.setIostorinvdtl_id(invdisdtl.get(0).getIostorinvdtl_id()); + iostorinvdisCp.setSeq_no(1); + iostorinvdisCp.setMaterial_id(invdisdtl.get(0).getMaterial_id()); + iostorinvdisCp.setPcsn(pcsn); + iostorinvdisCp.setQuality_scode(invdisdtl.get(0).getQuality_scode()); + iostorinvdisCp.setIvt_level(invdisdtl.get(0).getIvt_level()); + iostorinvdisCp.setIs_active(true); + iostorinvdisCp.setIs_issued(false); + iostorinvdisCp.setWork_status(IOSEnum.WORK_STATUS.code("未生成")); + iostorinvdisCp.setStoragevehicle_id(invdisdtl.get(0).getStoragevehicle_id()); + iostorinvdisCp.setStoragevehicle_code(invdisdtl.get(0).getStoragevehicle_code()); + iostorinvdisCp.setStoragevehicle_type(invdisdtl.get(0).getStoragevehicle_type()); + iostorinvdisCp.setQty_unit_id(invdisdtl.get(0).getQty_unit_id()); + iostorinvdisCp.setQty_unit_name(invdisdtl.get(0).getQty_unit_name()); + iostorinvdisCp.setPlan_qty(new BigDecimal(row.getStorage_qty())); + iostorinvdisCp.setReal_qty(iostorinvdisCp.getPlan_qty()); + iostorinvdisCp.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + iostorinvdisCp.setPoint_code(structattr.getStruct_code()); + //设置入库点 + invdis.add(iostorinvdisCp); + } + } + iostorinvdtlCpService.batchInsert(invdtl); + iStIvtIostorinvdisdtlCpService.batchInsert(invdisdtl); + iostorinvdisCpService.batchInsert(invdis); + // 插入分配 + StIvtStructattr stIvtStructattr = structattr; + // 2.更新分配明细、分配、明细、主表 + updateDivIos(stIvtStructattr,new JSONObject(MapOf.of("iostorinv_id",stIvtIostorinvCp.getIostorinv_id(),"storagevehicle_code",item.getString("storagevehicle_code"),rows.get(i).getStoragevehicle_code())),stIvtIostorinvCp); + // 3.更新仓位状态 - 锁定 + stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁")); + stIvtStructattr.setUpdate_id(SecurityUtils.getCurrentUserId()); + stIvtStructattr.setUpdate_name(SecurityUtils.getCurrentNickName()); + stIvtStructattr.setUpdate_time(new Date()); + stIvtStructattr.setInv_type(IOSEnum.IO_TYPE.code("入库")); + stIvtStructattr.setInv_id(stIvtIostorinvCp.getIostorinv_id()); + stIvtStructattr.setInv_code(stIvtIostorinvCp.getBill_code()); + structattrService.updateById(stIvtStructattr); + // 4.更新库存 + Map> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, stIvtIostorinvCp.getIostorinv_id()) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, stIvtIostorinvCp) + ) + .stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id)); + + for (List list : collect.values()) { + BigDecimal planqty = list + .stream() + .map(StIvtIostorinvdisCp::getReal_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + StIvtIostorinvdisCp disDao_1 = list.get(0); + disDao_1.setPlan_qty(planqty); + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id()); + JSONObject param = ivtDataParam(disDao_1, ChangeIvtUtil.ADDWAREHOUSING_QTY, dtlDao.getBase_billdtl_id()); + param.put("product_area", stIvtIostorinvCp.getProduct_area()); + param.put("stor_id", stIvtIostorinvCp.getStor_id()); + param.put("bill_code",stIvtIostorinvCp.getBill_code()); + param.put("inv_id",stIvtIostorinvCp.getIostorinv_id()); + param.put("bill_type_scode",stIvtIostorinvCp.getBill_type()); + iStIvtStructivtCpService.UpdateIvt(param); +// iStIvtIostorinvCpService.setPoint(new JSONObject(MapOf.of("point_code",structattr.getStruct_code(),"iostorinvdis_id",iostorinvdisCp.getIostorinvdis_id()))); + } + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_CP_IN) + .acs_task_type("8") + .task_group_id(IdUtil.getStringId()) + .point_code3(structattr.getStruct_code()) + .point_code1(structattr.getStruct_code()) + .vehicle_code(item.getString("point_code")) + .product_area("A1") // 暂时写死 +// .callback((Consumer) disDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + // 2.调用PC成品入库服务设置起点 +// JSONObject paramTask = createTaskData(item); + // 2.调用PC成品入库服务下发任务 +// iStIvtIostorinvCpService.sendTask(paramTask); + } + return null; + } + + public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) { + JSONObject ivtParam = new JSONObject(); + ivtParam.put("struct_id", disDao.getStruct_id()); + ivtParam.put("material_id", disDao.getMaterial_id()); + ivtParam.put("pcsn", disDao.getPcsn()); + ivtParam.put("quality_scode", disDao.getQuality_scode()); + ivtParam.put("ivt_level", disDao.getIvt_level()); + ivtParam.put("change_qty", disDao.getReal_qty()); + ivtParam.put("change_type", change_type); + ivtParam.put("sale_id", sale_id); + + return ivtParam; + } + + @NotNull + private void updateDivIos(StIvtStructattr attrDao, JSONObject whereJson,StIvtIostorinvCp stIvtIostorinvCp) { + /* 分配货位更新: + 更新分配明细、分配、明细、主表 + */ + + // 1.更新此托盘下的所有分配明细表 + iStIvtIostorinvdisdtlCpService.update( + new StIvtIostorinvdisdtlCp() + .setSect_id(attrDao.getSect_id()) + .setSect_code(attrDao.getSect_code()) + .setSect_name(attrDao.getSect_name()) + .setStruct_id(attrDao.getStruct_id()) + .setStruct_code(attrDao.getStruct_code()) + .setStruct_name(attrDao.getStruct_name()), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ); + + // 2.更新分配表 + iostorinvdisCpService.update( + new StIvtIostorinvdisCp() + .setSect_id(attrDao.getSect_id()) + .setSect_code(attrDao.getSect_code()) + .setSect_name(attrDao.getSect_name()) + .setStruct_id(attrDao.getStruct_id()) + .setStruct_code(attrDao.getStruct_code()) + .setStruct_name(attrDao.getStruct_name()), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ); + + // 3.更新明细表 + Map> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ) + .stream() + .filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id())) + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id)); + + for (List collectList : collect.values()) { + // 计算已分配 + BigDecimal qty = collectList + .stream() + .map(StIvtIostorinvdisCp::getReal_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id()); + + // 明细已分配数量 + BigDecimal assign_qty = NumberUtil.add(dtlDao.getAssign_qty(), qty); + // 明细未分配数量 + BigDecimal unAssign_qty = NumberUtil.sub(dtlDao.getUnassign_qty(), qty); + + dtlDao.setAssign_qty(assign_qty); + dtlDao.setUnassign_qty(unAssign_qty); + + if (unAssign_qty.doubleValue() == 0) { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + } else { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + + iostorinvdtlCpService.updateById(dtlDao); + } + + // 4.更新主表 + stIvtIostorinvCp.setUpdate_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setUpdate_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setUpdate_time(new Date()); + stIvtIostorinvCp.setDis_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setDis_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setDis_time(DateUtil.now()); + + // 查询主表下所有明细 + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, stIvtIostorinvCp.getIostorinv_id()) + ); + + // 判断是否都为分配完 + boolean is_true = dtlDaoList + .stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (is_true) { + // 更新主表为分配完 + stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + } else { + // 更新主表为分配中 + stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + } @Override public JSONObject getAll(JSONObject whereJson) { List list = iStIvtIostorinvCpService.getPdaAll(whereJson); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index a31f6625..22a8037d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -740,7 +740,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() .eq(MdMeMaterialbase::getMaterial_code, json.getString("material_code")) ); - if (ObjectUtil.isNotEmpty(row.getBase_bill_code())) { MpsSaleOrder orderDao = iMpsSaleOrderService.getOne( new QueryWrapper().lambda() .eq(MpsSaleOrder::getSale_code, row.getBase_bill_code()) .eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table()) ); - if (ObjectUtil.isEmpty(orderDao)) { - throw new BadRequestException(row.getSource_bill_code()+"对应销售单"+row.getBase_bill_code()+"_"+row.getBase_bill_table()+"不存在!"); - } +// if (ObjectUtil.isEmpty(orderDao)) { +// throw new BadRequestException(row.getSource_bill_code()+"对应销售单"+row.getBase_bill_code()+"_"+row.getBase_bill_table()+"不存在!"); +// } - row.setBase_billdtl_id(orderDao.getSale_id()); + row.setBase_billdtl_id(orderDao==null?"":orderDao.getSale_id()); row.setBase_bill_code(row.getBase_bill_code()); row.setBase_bill_type(orderDao==null?"":orderDao.getSale_type()); row.setBase_bill_table(row.getBase_bill_table()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java index 5599059f..5e763a5e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java @@ -200,7 +200,8 @@ public class StIvtMoreorlessmstCpServiceImpl extends ServiceImpl().lambda() .set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode()) - .eq(SchBaseTask::getTask_id, mstDao.getTask_id()) + .eq(SchBaseTask::getTask_id,task_id) ); - - // 更新主表 - mstDao.setTask_id(""); - mstDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成")); - mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); - this.updateById(mstDao); + if (mstDao!=null){ + // 更新主表 + mstDao.setTask_id(""); + mstDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成")); + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + this.updateById(mstDao); + } } } diff --git a/mes/qd/src/views/wms/pcs/deliveryorder/UploadDialog.vue b/mes/qd/src/views/wms/pcs/deliveryorder/UploadDialog.vue new file mode 100644 index 00000000..a5b68fc2 --- /dev/null +++ b/mes/qd/src/views/wms/pcs/deliveryorder/UploadDialog.vue @@ -0,0 +1,116 @@ + + + + diff --git a/mes/qd/src/views/wms/pcs/deliveryorder/index.vue b/mes/qd/src/views/wms/pcs/deliveryorder/index.vue index d6b74d92..5bdbc044 100644 --- a/mes/qd/src/views/wms/pcs/deliveryorder/index.vue +++ b/mes/qd/src/views/wms/pcs/deliveryorder/index.vue @@ -230,6 +230,7 @@ import CRUD, {presenter, header, form, crud} from '@crud/crud' import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' +import UploadDialog from '@/views/wms/pcs/deliveryorder/UploadDialog' import Dialog from '@/views/wms/pcs/deliveryorder/Dialog' import pagination from '@crud/Pagination' import Treeselect, {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect' @@ -261,7 +262,7 @@ const defaultForm = { export default { name: 'DeliveryOrder', dicts: ['PCS_DELIVER_TYPE', 'PCS_DELI_STATUS'], - components: {pagination, crudOperation, rrOperation, udOperation, Treeselect, Dialog}, + components: {pagination, crudOperation, rrOperation, udOperation, Treeselect, Dialog, UploadDialog}, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ diff --git a/mes/qd/src/views/wms/storage_manage/product/bucketRecord/Dialog.vue b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/Dialog.vue new file mode 100644 index 00000000..07f7bb3c --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/Dialog.vue @@ -0,0 +1,93 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/product/bucketRecord/UploadDialog.vue b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/UploadDialog.vue new file mode 100644 index 00000000..20dec9e9 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/UploadDialog.vue @@ -0,0 +1,116 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/product/bucketRecord/bucketrecord.js b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/bucketrecord.js new file mode 100644 index 00000000..69aa5501 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/bucketrecord.js @@ -0,0 +1,75 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: '/api/mdPbBucketrecord', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/mdPbBucketrecord/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/mdPbBucketrecord', + method: 'put', + data + }) +} + +export function addPersons(data) { + return request({ + url: '/api/mdPbBucketrecord/addPersons', + method: 'post', + data + }) +} + +export function getHeader(data) { + return request({ + url: '/api/mdPbBucketrecord/getHeader', + method: 'post', + data + }) +} + +export function getDeviceIdByUserId(data) { + return request({ + url: '/api/mdPbBucketrecord/getDeviceIdByUserId', + method: 'post', + data + }) +} + +export function addDevices(data) { + return request({ + url: '/api/mdPbBucketrecord/addDevices', + method: 'post', + data + }) +} + +export function deleteRow(data) { + return request({ + url: '/api/mdPbBucketrecord/deleteRow', + method: 'delete', + data + }) +} + +export function excelImport(data) { + return request({ + url: '/api/mdPbBucketrecord/excelImport', + method: 'post', + data + }) +} + +export default { add, edit, del, addPersons, getHeader, deleteRow, addDevices,excelImport } diff --git a/mes/qd/src/views/wms/storage_manage/product/bucketRecord/index.vue b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/index.vue new file mode 100644 index 00000000..05fc69a2 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/bucketRecord/index.vue @@ -0,0 +1,256 @@ + + + + +