rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
@@ -1,6 +1,7 @@ package com.vincent.rsf.server.api.entity.dto; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonFormat; import com.vincent.rsf.server.api.controller.params.ReceiptParams; import com.vincent.rsf.server.common.utils.CommonUtil; import com.vincent.rsf.server.common.utils.FieldsUtils; @@ -9,8 +10,10 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; import java.util.Map; /** @@ -52,12 +55,18 @@ @ApiModelProperty("质检结果") private String inspect; @ApiModelProperty("重量") private Double weigth; @ApiModelProperty("采购单位") private String purUnit; @ApiModelProperty("库存单位") private String stockUnit; @ApiModelProperty("收货日期") private String prodTime; @ApiModelProperty("采购数量") private Double purQty; rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -43,6 +43,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; /** @@ -166,12 +167,15 @@ throw new CoolException("库区标识不能为空!!"); } WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getId, params.getWhAreaId())); WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>() .eq(WarehouseAreas::getId, params.getWhAreaId())); if (Objects.isNull(areasItem)) { throw new CoolException("数据错误:当前库区不存在!!"); } //获取已启用的动态扩展字 List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>() .eq(Fields::getFlagEnable, 1) .eq(Fields::getStatus, 1)); List<ReceiptDetlsDto> receipts = params.getReceipts(); List<WarehouseAreasItem> allOrders = new ArrayList<>(); @@ -180,7 +184,8 @@ String asnCode = receipts.stream().findFirst().get().getAsnCode(); AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode)); AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>() .eq(AsnOrder::getCode, asnCode)); if (Objects.isNull(asnOrder)) { throw new CoolException("数据错误:主单不存在!!"); } @@ -208,16 +213,24 @@ if (Objects.isNull(orderItem)) { throw new CoolException("通知单明细不存在!!"); } orderItem.setQty(dto.getReceiptQty()); orderItem.setQty(dto.getReceiptQty()) .setProdTime(dto.getProdTime()); if (asnOrderItemMapper.updateById(orderItem) < 1) { throw new CoolException("通知单明细数量修改失败!!"); } WarehouseAreasItem item = new WarehouseAreasItem(); // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String format = null; // if (Objects.isNull(dto.getProdTime())) { // format = dateFormat.format(dto.getProdTime()); // } item.setBarcode(dto.getBarcode()) .setAreaName(areasItem.getName()) .setAreaId(areasItem.getId()) .setProdTime(dto.getProdTime()) .setWeight(dto.getWeigth()) .setStockUnit(dto.getStockUnit()) .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto)) .setAnfme(dto.getReceiptQty()) rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
@@ -22,8 +22,8 @@ // generator.username="sa"; // generator.password="Zoneyung@zy56$"; generator.table="man_asn_order_log"; generator.tableDesc="组拖档明细"; generator.table="man_wait_pakin_item_log"; generator.tableDesc="组拖明细历史档"; generator.packagePath="com.vincent.rsf.server.manager"; generator.build(); rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinItemController.java
@@ -12,6 +12,7 @@ import com.vincent.rsf.server.manager.entity.WaitPakinItem; import com.vincent.rsf.server.manager.service.WaitPakinItemService; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -19,6 +20,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.*; @Api(tags = "组拖档明细") @RestController public class WaitPakinItemController extends BaseController { rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinItemLogController.java
New file @@ -0,0 +1,110 @@ package com.vincent.rsf.server.manager.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.WaitPakinItemLog; import com.vincent.rsf.server.manager.service.WaitPakinItemLogService; import com.vincent.rsf.server.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; @RestController public class WaitPakinItemLogController extends BaseController { @Autowired private WaitPakinItemLogService waitPakinItemLogService; @PreAuthorize("hasAuthority('manager:waitPakinItemLog:list')") @PostMapping("/waitPakinItemLog/page") public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<WaitPakinItemLog, BaseParam> pageParam = new PageParam<>(baseParam, WaitPakinItemLog.class); return R.ok().add(waitPakinItemLogService.page(pageParam, pageParam.buildWrapper(true))); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:list')") @PostMapping("/waitPakinItemLog/list") public R list(@RequestBody Map<String, Object> map) { return R.ok().add(waitPakinItemLogService.list()); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:list')") @PostMapping({"/waitPakinItemLog/many/{ids}", "/waitPakinItemLogs/many/{ids}"}) public R many(@PathVariable Long[] ids) { return R.ok().add(waitPakinItemLogService.listByIds(Arrays.asList(ids))); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:list')") @GetMapping("/waitPakinItemLog/{id}") public R get(@PathVariable("id") Long id) { return R.ok().add(waitPakinItemLogService.getById(id)); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:save')") @OperationLog("Create 组拖明细历史档") @PostMapping("/waitPakinItemLog/save") public R save(@RequestBody WaitPakinItemLog waitPakinItemLog) { waitPakinItemLog.setCreateBy(getLoginUserId()); waitPakinItemLog.setCreateTime(new Date()); waitPakinItemLog.setUpdateBy(getLoginUserId()); waitPakinItemLog.setUpdateTime(new Date()); if (!waitPakinItemLogService.save(waitPakinItemLog)) { return R.error("Save Fail"); } return R.ok("Save Success").add(waitPakinItemLog); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:update')") @OperationLog("Update 组拖明细历史档") @PostMapping("/waitPakinItemLog/update") public R update(@RequestBody WaitPakinItemLog waitPakinItemLog) { waitPakinItemLog.setUpdateBy(getLoginUserId()); waitPakinItemLog.setUpdateTime(new Date()); if (!waitPakinItemLogService.updateById(waitPakinItemLog)) { return R.error("Update Fail"); } return R.ok("Update Success").add(waitPakinItemLog); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:remove')") @OperationLog("Delete 组拖明细历史档") @PostMapping("/waitPakinItemLog/remove/{ids}") public R remove(@PathVariable Long[] ids) { if (!waitPakinItemLogService.removeByIds(Arrays.asList(ids))) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:list')") @PostMapping("/waitPakinItemLog/query") public R query(@RequestParam(required = false) String condition) { List<KeyValVo> vos = new ArrayList<>(); LambdaQueryWrapper<WaitPakinItemLog> wrapper = new LambdaQueryWrapper<>(); if (!Cools.isEmpty(condition)) { wrapper.like(WaitPakinItemLog::getId, condition); } waitPakinItemLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach( item -> vos.add(new KeyValVo(item.getId(), item.getId())) ); return R.ok().add(vos); } @PreAuthorize("hasAuthority('manager:waitPakinItemLog:list')") @PostMapping("/waitPakinItemLog/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(waitPakinItemLogService.list(), WaitPakinItemLog.class), response); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinLogController.java
New file @@ -0,0 +1,110 @@ package com.vincent.rsf.server.manager.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.WaitPakinLog; import com.vincent.rsf.server.manager.service.WaitPakinLogService; import com.vincent.rsf.server.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; @RestController public class WaitPakinLogController extends BaseController { @Autowired private WaitPakinLogService waitPakinLogService; @PreAuthorize("hasAuthority('manager:waitPakinLog:list')") @PostMapping("/waitPakinLog/page") public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<WaitPakinLog, BaseParam> pageParam = new PageParam<>(baseParam, WaitPakinLog.class); return R.ok().add(waitPakinLogService.page(pageParam, pageParam.buildWrapper(true))); } @PreAuthorize("hasAuthority('manager:waitPakinLog:list')") @PostMapping("/waitPakinLog/list") public R list(@RequestBody Map<String, Object> map) { return R.ok().add(waitPakinLogService.list()); } @PreAuthorize("hasAuthority('manager:waitPakinLog:list')") @PostMapping({"/waitPakinLog/many/{ids}", "/waitPakinLogs/many/{ids}"}) public R many(@PathVariable Long[] ids) { return R.ok().add(waitPakinLogService.listByIds(Arrays.asList(ids))); } @PreAuthorize("hasAuthority('manager:waitPakinLog:list')") @GetMapping("/waitPakinLog/{id}") public R get(@PathVariable("id") Long id) { return R.ok().add(waitPakinLogService.getById(id)); } @PreAuthorize("hasAuthority('manager:waitPakinLog:save')") @OperationLog("Create 组拖历史档") @PostMapping("/waitPakinLog/save") public R save(@RequestBody WaitPakinLog waitPakinLog) { waitPakinLog.setCreateBy(getLoginUserId()); waitPakinLog.setCreateTime(new Date()); waitPakinLog.setUpdateBy(getLoginUserId()); waitPakinLog.setUpdateTime(new Date()); if (!waitPakinLogService.save(waitPakinLog)) { return R.error("Save Fail"); } return R.ok("Save Success").add(waitPakinLog); } @PreAuthorize("hasAuthority('manager:waitPakinLog:update')") @OperationLog("Update 组拖历史档") @PostMapping("/waitPakinLog/update") public R update(@RequestBody WaitPakinLog waitPakinLog) { waitPakinLog.setUpdateBy(getLoginUserId()); waitPakinLog.setUpdateTime(new Date()); if (!waitPakinLogService.updateById(waitPakinLog)) { return R.error("Update Fail"); } return R.ok("Update Success").add(waitPakinLog); } @PreAuthorize("hasAuthority('manager:waitPakinLog:remove')") @OperationLog("Delete 组拖历史档") @PostMapping("/waitPakinLog/remove/{ids}") public R remove(@PathVariable Long[] ids) { if (!waitPakinLogService.removeByIds(Arrays.asList(ids))) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); } @PreAuthorize("hasAuthority('manager:waitPakinLog:list')") @PostMapping("/waitPakinLog/query") public R query(@RequestParam(required = false) String condition) { List<KeyValVo> vos = new ArrayList<>(); LambdaQueryWrapper<WaitPakinLog> wrapper = new LambdaQueryWrapper<>(); if (!Cools.isEmpty(condition)) { wrapper.like(WaitPakinLog::getId, condition); } waitPakinLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach( item -> vos.add(new KeyValVo(item.getId(), item.getId())) ); return R.ok().add(vos); } @PreAuthorize("hasAuthority('manager:waitPakinLog:list')") @PostMapping("/waitPakinLog/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(waitPakinLogService.list(), WaitPakinLog.class), response); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -137,6 +137,12 @@ private Double qty; /** * 生产日期 */ @ApiModelProperty("生产日期") private String prodTime; /** * 供应商编码 */ @ApiModelProperty(value= "供应商编码") rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
@@ -71,7 +71,6 @@ * 是否删除 1: 是 0: 否 */ @ApiModelProperty(value= "是否删除 1: 是 0: 否 ") @TableLogic private Integer deleted; /** rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItemLog.java
New file @@ -0,0 +1,313 @@ package com.vincent.rsf.server.manager.entity; import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; import com.vincent.rsf.server.manager.service.MatnrService; import com.vincent.rsf.server.manager.service.WaitPakinService; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Date; @Data @Accessors(chain = true) @TableName("man_wait_pakin_item_log") public class WaitPakinItemLog implements Serializable { private static final long serialVersionUID = 1L; /** * ID */ @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 主单ID */ @ApiModelProperty(value= "主单ID") private Long pakinId; /** * 明细ID */ @ApiModelProperty(value= "明细ID") private Long pakinItemId; /** * 订单ID */ @ApiModelProperty(value= "订单ID") private Long asnId; /** * 订单号 */ @ApiModelProperty(value= "订单号") private String asnCode; /** * 明细ID */ @ApiModelProperty(value= "明细ID") private Long asnItemId; /** * 物料跟踪码 */ @ApiModelProperty(value= "物料跟踪码") private String trackCode; /** * 物料名称 */ @ApiModelProperty(value= "物料名称") private String maktx; /** * 物料ID */ @ApiModelProperty(value= "物料ID") private Long matnrId; /** * 物料编码 */ @ApiModelProperty(value= "物料编码") private String matnrCode; /** * 数量 */ @ApiModelProperty(value= "数量") private Double anfme; /** * 执行中数量 */ @ApiModelProperty(value= "执行中数量") private Double workQty; /** * 单位 */ @ApiModelProperty(value= "单位") private String unit; /** * 扩展字段标识 */ @ApiModelProperty(value= "扩展字段标识") private String fieldsIndex; /** * 已完成数量 */ @ApiModelProperty(value= "已完成数量") private Double qty; /** * 批次号 */ @ApiModelProperty(value= "批次号") private String batch; /** * 状态 1: 正常 0: 冻结 */ @ApiModelProperty(value= "状态 1: 正常 0: 冻结 ") private Integer status; /** * 是否删除 1: 是 0: 否 */ @ApiModelProperty(value= "是否删除 1: 是 0: 否 ") @TableLogic private Integer deleted; /** * 租户 */ @ApiModelProperty(value= "租户") private Integer tenantId; /** * 添加人员 */ @ApiModelProperty(value= "添加人员") private Long createBy; /** * 添加时间 */ @ApiModelProperty(value= "添加时间") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 修改人员 */ @ApiModelProperty(value= "修改人员") private Long updateBy; /** * 修改时间 */ @ApiModelProperty(value= "修改时间") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; /** * 备注 */ @ApiModelProperty(value= "备注") private String memo; public WaitPakinItemLog() {} public WaitPakinItemLog(Long pakinId,Long pakinItemId,Long asnId,String asnCode,Long asnItemId,String trackCode,String maktx,Long matnrId,String matnrCode,Double anfme,Double workQty,String unit,String fieldsIndex,Double qty,String batch,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.pakinId = pakinId; this.pakinItemId = pakinItemId; this.asnId = asnId; this.asnCode = asnCode; this.asnItemId = asnItemId; this.trackCode = trackCode; this.maktx = maktx; this.matnrId = matnrId; this.matnrCode = matnrCode; this.anfme = anfme; this.workQty = workQty; this.unit = unit; this.fieldsIndex = fieldsIndex; this.qty = qty; this.batch = batch; this.status = status; this.deleted = deleted; this.tenantId = tenantId; this.createBy = createBy; this.createTime = createTime; this.updateBy = updateBy; this.updateTime = updateTime; this.memo = memo; } // WaitPakinItemLog waitPakinItemLog = new WaitPakinItemLog( // null, // 主单ID // null, // 明细ID // null, // 订单ID // null, // 订单号 // null, // 明细ID // null, // 物料跟踪码 // null, // 物料名称 // null, // 物料ID // null, // 物料编码 // null, // 数量 // null, // 执行中数量 // null, // 单位 // null, // 扩展字段标识 // null, // 已完成数量 // null, // 批次号 // null, // 状态[非空] // null, // 是否删除[非空] // null, // 租户 // null, // 添加人员 // null, // 添加时间[非空] // null, // 修改人员 // null, // 修改时间[非空] // null // 备注 // ); public String getPakinId$(){ WaitPakinService service = SpringUtils.getBean(WaitPakinService.class); WaitPakin waitPakin = service.getById(this.pakinId); if (!Cools.isEmpty(waitPakin)){ return String.valueOf(waitPakin.getId()); } return null; } public String getMatnrId$(){ MatnrService service = SpringUtils.getBean(MatnrService.class); Matnr matnr = service.getById(this.matnrId); if (!Cools.isEmpty(matnr)){ return String.valueOf(matnr.getUnit()); } return null; } public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ case 1: return "正常"; case 0: return "冻结"; default: return String.valueOf(this.status); } } public String getCreateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.createBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getCreateTime$(){ if (Cools.isEmpty(this.createTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); } public String getUpdateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.updateBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getUpdateTime$(){ if (Cools.isEmpty(this.updateTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); } public Boolean getStatusBool(){ if (null == this.status){ return null; } switch (this.status){ case 1: return true; case 0: return false; default: return null; } } } rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java
New file @@ -0,0 +1,225 @@ package com.vincent.rsf.server.manager.entity; import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Date; @Data @Accessors(chain = true) @TableName("man_wait_pakin_log") public class WaitPakinLog implements Serializable { private static final long serialVersionUID = 1L; /** * ID */ @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 主单ID */ @ApiModelProperty(value= "主单ID") private Long pakinId; /** * 编码 */ @ApiModelProperty(value= "编码") private String code; /** * 容器码 */ @ApiModelProperty(value= "容器码") private String barcode; /** * 组拖数量 */ @ApiModelProperty(value= "组拖数量") private Double anfme; /** * 组拖状态 0: 待入库 1: 入库中 */ @ApiModelProperty(value= "组拖状态 0: 待入库 1: 入库中 ") private Short ioStatus; /** * 状态 1: 正常 0: 冻结 */ @ApiModelProperty(value= "状态 1: 正常 0: 冻结 ") private Integer status; /** * 是否删除 1: 是 0: 否 */ @ApiModelProperty(value= "是否删除 1: 是 0: 否 ") @TableLogic private Integer deleted; /** * 租户 */ @ApiModelProperty(value= "租户") private Integer tenantId; /** * 添加人员 */ @ApiModelProperty(value= "添加人员") private Long createBy; /** * 添加时间 */ @ApiModelProperty(value= "添加时间") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 修改人员 */ @ApiModelProperty(value= "修改人员") private Long updateBy; /** * 修改时间 */ @ApiModelProperty(value= "修改时间") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; /** * 备注 */ @ApiModelProperty(value= "备注") private String memo; public WaitPakinLog() {} public WaitPakinLog(Long pakinId,String code,String barcode,Double anfme,Short ioStatus,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.pakinId = pakinId; this.code = code; this.barcode = barcode; this.anfme = anfme; this.ioStatus = ioStatus; this.status = status; this.deleted = deleted; this.tenantId = tenantId; this.createBy = createBy; this.createTime = createTime; this.updateBy = updateBy; this.updateTime = updateTime; this.memo = memo; } // WaitPakinLog waitPakinLog = new WaitPakinLog( // null, // 主单ID // null, // 编码 // null, // 容器码 // null, // 组拖数量 // null, // 组拖状态[非空] // null, // 状态[非空] // null, // 是否删除[非空] // null, // 租户 // null, // 添加人员 // null, // 添加时间[非空] // null, // 修改人员 // null, // 修改时间[非空] // null // 备注 // ); public String getIoStatus$(){ if (null == this.ioStatus){ return null; } switch (this.ioStatus){ case 0: return "待入库"; case 1: return " 入库中"; default: return String.valueOf(this.ioStatus); } } public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ case 1: return "正常"; case 0: return "冻结"; default: return String.valueOf(this.status); } } public String getCreateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.createBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getCreateTime$(){ if (Cools.isEmpty(this.createTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); } public String getUpdateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.updateBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getUpdateTime$(){ if (Cools.isEmpty(this.updateTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); } public Boolean getStatusBool(){ if (null == this.status){ return null; } switch (this.status){ case 1: return true; case 0: return false; default: return null; } } } rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/WaitPakinItemLogMapper.java
New file @@ -0,0 +1,12 @@ package com.vincent.rsf.server.manager.mapper; import com.vincent.rsf.server.manager.entity.WaitPakinItemLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface WaitPakinItemLogMapper extends BaseMapper<WaitPakinItemLog> { } rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/WaitPakinLogMapper.java
New file @@ -0,0 +1,12 @@ package com.vincent.rsf.server.manager.mapper; import com.vincent.rsf.server.manager.entity.WaitPakinLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface WaitPakinLogMapper extends BaseMapper<WaitPakinLog> { } rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -10,6 +10,7 @@ import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -20,6 +21,7 @@ import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * @author Ryan @@ -47,6 +49,16 @@ @Resource private SysStockProperties flowProperties; @Autowired private WaitPakinService waitPakinService; @Autowired private WaitPakinItemService waitPakinItemService; @Autowired private WaitPakinLogService waitPakinLogService; @Autowired private WaitPakinItemLogService waitPakinItemLogService; /** * @author Ryan * @description 根据PO单据生成ASN单,自动生成ASN单为全量生成 @@ -55,7 +67,6 @@ * @time 2025/3/3 15:44 */ @Scheduled(cron = "0 0/05 * * * ? ") // @Scheduled(cron = "0/5 * * * * ?") @Transactional(rollbackFor = Exception.class) public void genAsnOrder() { //判断是否开启自动生成ASN单据 @@ -131,13 +142,15 @@ if (!purchaseService.saveOrUpdate(purchase)) { throw new CoolException("PO单执行完成后,保存失败!!"); } }); } /** * 生成物料标签 * @author Ryan * @description 生成物料标签 * @param * @return * @time 2025/3/29 12:35 */ @Scheduled(cron = "0 0/05 * * * ? ") @Transactional(rollbackFor = Exception.class) @@ -163,4 +176,57 @@ } } /** * @author Ryan * @description 组拖历史档 * @param * @return * @time 2025/3/29 12:36 */ @Scheduled(cron = "0/5 * * * * ?") @Transactional(rollbackFor = Exception.class) public void pakinLog() { List<WaitPakin> pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getIoStatus, 2).select(WaitPakin::getId)); if (pakinIds.isEmpty()) { return; } List<Long> list = pakinIds.stream().map(WaitPakin::getId).collect(Collectors.toList()); List<WaitPakin> pakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().in(WaitPakin::getId, list)); if (pakins.isEmpty()) { throw new CoolException("组拖单为空!!"); } List<WaitPakinLog> pakinLogs = new ArrayList<>(); pakins.forEach(pakin ->{ WaitPakinLog log = new WaitPakinLog(); BeanUtils.copyProperties(pakin, log); log.setPakinId(pakin.getId()).setIoStatus(Short.parseShort("2")); pakinLogs.add(log); }); if (!waitPakinLogService.saveBatch(pakinLogs)) { throw new CoolException("历史档保存失败!!"); } List<WaitPakinItemLog> itemLogs = new ArrayList<>(); List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().in(WaitPakinItem::getPakinId, list)); if (pakinItems.isEmpty()) { throw new CoolException("组拖明细为空!!"); } pakinItems.forEach(item -> { WaitPakinItemLog itemLog = new WaitPakinItemLog(); BeanUtils.copyProperties(item, itemLog); itemLog.setPakinItemId(item.getId()) .setPakinId(item.getPakinId()); itemLogs.add(itemLog); }); if (!waitPakinItemLogService.saveBatch(itemLogs)) { throw new CoolException("历史明细档保存失败!!"); } if (!waitPakinService.removeByIds(pakins)) { throw new CoolException("原单据删除失败!!"); } if (!waitPakinItemService.removeByIds(pakinItems)) { throw new CoolException("原单据明细删除失败!!"); } } } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinItemLogService.java
New file @@ -0,0 +1,8 @@ package com.vincent.rsf.server.manager.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.server.manager.entity.WaitPakinItemLog; public interface WaitPakinItemLogService extends IService<WaitPakinItemLog> { } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinLogService.java
New file @@ -0,0 +1,8 @@ package com.vincent.rsf.server.manager.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.server.manager.entity.WaitPakinLog; public interface WaitPakinLogService extends IService<WaitPakinLog> { } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -108,10 +108,6 @@ String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, asnOrderItem); asnOrderItem.setTrackCode(ruleCode); } if (StringUtils.isBlank(asnOrderItem.getBatch())) { String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_BATCH_CODE, asnOrderItem); asnOrderItem.setBatch(ruleCode); } if (!this.saveOrUpdate(asnOrderItem)) { throw new CoolException("收货通知单明细保存失败!!"); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinItemLogServiceImpl.java
New file @@ -0,0 +1,12 @@ package com.vincent.rsf.server.manager.service.impl; import com.vincent.rsf.server.manager.mapper.WaitPakinItemLogMapper; import com.vincent.rsf.server.manager.entity.WaitPakinItemLog; import com.vincent.rsf.server.manager.service.WaitPakinItemLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service("waitPakinItemLogService") public class WaitPakinItemLogServiceImpl extends ServiceImpl<WaitPakinItemLogMapper, WaitPakinItemLog> implements WaitPakinItemLogService { } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinLogServiceImpl.java
New file @@ -0,0 +1,12 @@ package com.vincent.rsf.server.manager.service.impl; import com.vincent.rsf.server.manager.mapper.WaitPakinLogMapper; import com.vincent.rsf.server.manager.entity.WaitPakinLog; import com.vincent.rsf.server.manager.service.WaitPakinLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service("waitPakinLogService") public class WaitPakinLogServiceImpl extends ServiceImpl<WaitPakinLogMapper, WaitPakinLog> implements WaitPakinLogService { } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -61,8 +61,9 @@ if (StringUtils.isBlank(ruleCode)) { throw new CoolException("编码规则错误: 编码规则「SYS_WAIT_PAKIN_CODE」规则是不存在"); } pakin.setCode(ruleCode) //状态修改为入库中 .setIoStatus(Short.parseShort("1")) .setAnfme(sum) .setBarcode(waitPakin.getBarcode()); if (!this.save(pakin)) { @@ -89,7 +90,6 @@ .setMatnrCode(item.getMatnrCode()) .setBatch(item.getSplrBatch()) .setUnit(item.getStockUnit()) .setBatch(item.getSplrBatch()) .setFieldsIndex(item.getFieldsIndex()) .setUnit(item.getStockUnit()) .setMatnrId(StringUtils.isNotBlank(item.getMatnrId()) ? Long.parseLong(item.getMatnrId()) : null) rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
@@ -43,10 +43,4 @@ * 组拖编码生成规则 */ public final static String SYS_WAIT_PAKIN_CODE = "sys_wait_pakin_code"; /** * 库存批次编码规则 */ public final static String SYS_STOCK_BATCH_CODE = "sys_stock_batch_code"; } rsf-server/src/main/resources/mapper/manager/WaitPakinItemLogMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vincent.rsf.server.manager.mapper.WaitPakinItemLogMapper"> </mapper> rsf-server/src/main/resources/mapper/manager/WaitPakinLogMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vincent.rsf.server.manager.mapper.WaitPakinLogMapper"> </mapper>