package com.glxp.api.controller.purchase; //领用单 import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; import com.glxp.api.controller.BaseController; import com.glxp.api.controller.inv.InvPreProductController; import com.glxp.api.controller.inv.InvPreinProductController; import com.glxp.api.controller.inv.InvProductController; import com.glxp.api.dao.auth.InvWarehouseDao; import com.glxp.api.dao.basic.BasicDestinyRelMapper; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inout.PurReceiveDetailEntity; import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.entity.purchase.*; import com.glxp.api.exception.JsonException; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.inout.*; import com.glxp.api.req.inv.FilterInvPreProductRequest; import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.req.inv.FilterInvProductRequest; import com.glxp.api.req.purchase.purReceiveRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.inout.ReceiveDetailResponse; import com.glxp.api.res.inout.ReceiveResponse; import com.glxp.api.res.inv.InvPreProductResponse; import com.glxp.api.res.inv.InvPreinProductResponse; import com.glxp.api.res.inv.InvProductResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.WarehouseUserService; import com.glxp.api.service.basic.IBasicBusTypeChangeService; import com.glxp.api.service.basic.SysApprovalFlowService; import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.service.inout.impl.ReceiveDetailService; import com.glxp.api.service.inout.impl.ReceiveService; import com.glxp.api.service.inv.InvPreProductService; import com.glxp.api.service.inv.InvPreinProductService; import com.glxp.api.service.inv.impl.InvProductService; import com.glxp.api.service.purchase.*; import com.glxp.api.service.purchase.impl.PurApplyDetailService; import com.glxp.api.service.purchase.impl.PurApplyService; import com.glxp.api.service.purchase.impl.PurOrderDetailService; import com.glxp.api.service.purchase.impl.PurPlanDetailService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.*; import com.glxp.api.util.udi.FilterUdiUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @RestController public class PurOrderReceiveController extends BaseController { @Resource ReceiveService receiveService; @Resource ReceiveDetailService receivedetailService; @Resource CustomerService customerService; @Resource GennerOrderUtils gennerOrderUtils; @Resource PurApplyDetailService purApplyDetailService; @Resource UdiProductService udiProductService; @Resource IBasicBusTypeChangeService basicBusTypeChangeService; @Resource PurApplyService purApplyService; @Resource PurPlanService purPlanService; @Resource PurPlanDetailService purPlanDetailService; @Resource PurOrderService purOrderService; @Resource PurOrderDetailService purOrderDetailService; @Resource IoOrderService ioOrderService; @Resource IoOrderDetailBizService ioOrderDetailBizService; @Resource IoPurChangeService purChangeService; @Resource InvWarehouseDao invWarehouseDao; @Resource InvPreProductController invPreProductController; @Resource InvPreinProductController invPreinProductController; @Resource InvProductController invProductController; @Resource SysApprovalFlowService sysApprovalFlowService; @Resource SystemParamConfigService systemParamConfigService; @Resource BasicDestinyRelMapper basicDestinyRelMapper; final String type = "ly"; @AuthRuleAnnotation("") @PostMapping("/udiwms/thrsys/order/insertWeb") public BaseResponse addReceive(@RequestBody PurReceiveEntity purReceiveEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } Long userId = customerService.getUserId(); InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(purReceiveEntity.getInvCode()); InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(purReceiveEntity.getTargetInvCode()); purReceiveEntity.setCreateUser(userId + ""); purReceiveEntity.setCreateTime(new Date()); purReceiveEntity.setUpdateTime(new Date()); String orderNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.LIN_YONG, "yyyyMMdd")); purReceiveEntity.setBillNo(orderNo); purReceiveEntity.setDeptCode(curWarehouseEntity.getParentId()); purReceiveEntity.setTargetDeptCode(targetWarehouseEntity.getParentId()); receiveService.insertOrder(purReceiveEntity); return ResultVOUtils.success("成功"); } @AuthRuleAnnotation("") @PostMapping("/udiwms/receive/order/update") public BaseResponse updateReceive(@RequestBody PurReceiveEntity purReceiveEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } Long userId = customerService.getUserId(); purReceiveEntity.setStatus(purReceiveEntity.getStatus()); Boolean sys_approval_flow = "1".equals(systemParamConfigService.selectValueByParamKey("sys_approval_flow")); Integer editStatus = purReceiveEntity.getStatus(); if (editStatus == 2 && sys_approval_flow){//提交审核 String approvalFlowId = sysApprovalFlowService.getApprovalFlowId(); purReceiveEntity.setApprovalFlowId(approvalFlowId); sysApprovalFlowService.generateFlow(approvalFlowId,purReceiveEntity.getBillNo(),type); } purReceiveEntity.setUpdateUser(userId + ""); purReceiveEntity.setUpdateTime(new Date()); receiveService.updateOrder(purReceiveEntity); return ResultVOUtils.success("成功"); } @AuthRuleAnnotation("") @GetMapping("/udiwms/receive/order/filter") public BaseResponse filterReceive(FilterReceiveRequest filterReceiveRequest) { // if (filterReceiveRequest.getIsUser() != null && filterReceiveRequest.getIsUser()) { // AuthAdmin authAdmin = customerService.getUserBean(); // filterReceiveRequest.setCreateUser(authAdmin.getId() + ""); //查询自己 // } if (filterReceiveRequest.getIsInvCode() != null && filterReceiveRequest.getIsInvCode()) { AuthAdmin authAdmin = customerService.getUserBean(); filterReceiveRequest.setTargetInvCode(authAdmin.getLocInvCode()); // filterReceiveRequest.setTargetInvCode("1000000"); } Boolean sys_approval_flow = "1".equals(systemParamConfigService.selectValueByParamKey("sys_approval_flow")); filterReceiveRequest.setSysApprovalFlow(sys_approval_flow); List data = receiveService.filterList(filterReceiveRequest); PageInfo pageInfo = new PageInfo<>(data); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(data); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @GetMapping("/udiwms/receive/order/detail") public BaseResponse filterReceiveDetail(FilterReceiveDetailRequest filterReceiveDetailRequest) { List data = receivedetailService.filterList(filterReceiveDetailRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(data); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(data); return ResultVOUtils.success(pageSimpleResponse); } @Resource InvWarehouseService invWarehouseService; @AuthRuleAnnotation("") @PostMapping("/udiwms/receive/detail/add") public BaseResponse updateReceive(@RequestBody AddReceiveDetailRequest addReceiveDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } AuthAdmin authAdmin = getUser(); String orderNo = addReceiveDetailRequest.getPurReceiveEntity().getBillNo(); if (addReceiveDetailRequest.getPurReceiveEntity() == null) return ResultVOUtils.error(500, "未指定订单"); if (CollUtil.isEmpty(addReceiveDetailRequest.getDatas())) { return ResultVOUtils.error(500, "未选择产品信息"); } PurReceiveEntity purReceiveEntity = addReceiveDetailRequest.getPurReceiveEntity(); if (StrUtil.isEmpty(purReceiveEntity.getBillNo())) { InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(purReceiveEntity.getInvCode()); InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(purReceiveEntity.getTargetInvCode()); orderNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.LIN_YONG, "yyyyMMdd")); purReceiveEntity.setBillNo(orderNo); purReceiveEntity.setCreateUser(authAdmin.getId() + ""); purReceiveEntity.setCreateTime(new Date()); purReceiveEntity.setStatus(1); purReceiveEntity.setDeptCode(curWarehouseEntity.getParentId()); purReceiveEntity.setTargetDeptCode(targetWarehouseEntity.getParentId()); receiveService.insertOrder(purReceiveEntity); } for (AddReceiveDetailRequest.DetaiData detaiData : addReceiveDetailRequest.getDatas()) { PurReceiveDetailEntity purReceiveDetailEntity = new PurReceiveDetailEntity(); purReceiveDetailEntity.setOrderIdFk(purReceiveEntity.getBillNo()); purReceiveDetailEntity.setNameCode(detaiData.getNameCode()); purReceiveDetailEntity.setExpireDate(detaiData.getExpireDate()); purReceiveDetailEntity.setProductDate(detaiData.getProductDate()); purReceiveDetailEntity.setRelIdFk(detaiData.getRelId()); purReceiveDetailEntity.setBatchNo(detaiData.getBatchNo()); purReceiveDetailEntity.setPrice(detaiData.getPrice()); purReceiveDetailEntity.setSupId(detaiData.getSupId()); receivedetailService.insert(purReceiveDetailEntity); } purReceiveEntity.setUpdateTime(new Date()); receiveService.updateOrder(purReceiveEntity); return ResultVOUtils.success(orderNo); } @AuthRuleAnnotation("") @PostMapping("/udiwms/thrsys/order/repeatAdd") public BaseResponse repeatAddReceive(@RequestBody AddReceiveDetailRequest addReceiveDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } AuthAdmin authAdmin = getUser(); PurReceiveEntity purReceiveEntity = addReceiveDetailRequest.getPurReceiveEntity(); String orderNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.LIN_YONG, "yyyyMMdd")); purReceiveEntity.setBillNo(orderNo); purReceiveEntity.setCreateUser(authAdmin.getId() + ""); purReceiveEntity.setCreateTime(new Date()); purReceiveEntity.setStatus(1); purReceiveEntity.setId(IdUtil.getSnowflakeNextId()); receiveService.insertOrder(purReceiveEntity); for (AddReceiveDetailRequest.DetaiData detaiData : addReceiveDetailRequest.getDatas()) { PurReceiveDetailEntity purReceiveDetailEntity = new PurReceiveDetailEntity(); purReceiveDetailEntity.setOrderIdFk(purReceiveEntity.getBillNo()); purReceiveDetailEntity.setId(null); purReceiveDetailEntity.setNameCode(detaiData.getNameCode()); purReceiveDetailEntity.setExpireDate(detaiData.getExpireDate()); purReceiveDetailEntity.setProductDate(detaiData.getProductDate()); purReceiveDetailEntity.setRelIdFk(detaiData.getRelIdFk()); purReceiveDetailEntity.setBatchNo(detaiData.getBatchNo()); purReceiveDetailEntity.setPrice(detaiData.getPrice()); purReceiveDetailEntity.setSupId(detaiData.getSupId()); purReceiveDetailEntity.setCount(detaiData.getCount()); receivedetailService.insert(purReceiveDetailEntity); } purReceiveEntity.setUpdateTime(new Date()); receiveService.updateOrder(purReceiveEntity); addReceiveDetailRequest.setPurReceiveEntity(purReceiveEntity); return ResultVOUtils.success(purReceiveEntity); } @Resource WarehouseUserService warehouseUserService; @Resource InvPreProductService invPreProductService; @Resource InvPreinProductService invPreinProductService; @Resource InvProductService invProductService; @AuthRuleAnnotation("") @PostMapping("/udiwms/receive/detail/Update") public BaseResponse updateReceiveDetail(@RequestBody UpdateReceiveDetailRequest updateReceiveDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } //判断库存 List list = new ArrayList<>(); List listinvprein = new ArrayList<>(); List listInv = new ArrayList<>(); //查询仓库类型 InvWarehouseEntity invWarehouseEntity = invWarehouseDao.filterGroupInvSubAndcode(updateReceiveDetailRequest.getTargetInvCode()); if (invWarehouseEntity.getAdvanceType() == 3) { //寄售 FilterInvPreProductRequest request = new FilterInvPreProductRequest(); // BeanUtils.copyProperties(updateReceiveDetailRequest,request); request.setDiCode(updateReceiveDetailRequest.getNameCode()); request.setInvCode(updateReceiveDetailRequest.getTargetInvCode()); list = selectFilterInvPreProductRequest(request); } else if (invWarehouseEntity.getAdvanceType() == 2) { //预验收 FilterInvPreinProductRequest request = new FilterInvPreinProductRequest(); // BeanUtils.copyProperties(updateReceiveDetailRequest,request); request.setDiCode(updateReceiveDetailRequest.getNameCode()); request.setInvCode(updateReceiveDetailRequest.getTargetInvCode()); listinvprein = selectfilterListStock(request); } else { FilterInvProductRequest request = new FilterInvProductRequest(); // BeanUtils.copyProperties(updateReceiveDetailRequest,request); request.setDiCode(updateReceiveDetailRequest.getNameCode()); request.setInvCode(updateReceiveDetailRequest.getTargetInvCode()); listInv = selectFilterInvProductRequest(request); } if (list != null && list.size() > 0) { if (list.get(0).getReCount() < IntUtil.value(updateReceiveDetailRequest.getCount())) { return ResultVOUtils.error(999, "库存不足!"); } } if (listinvprein != null && listinvprein.size() > 0) { if (listinvprein.get(0).getReCount() < updateReceiveDetailRequest.getCount()) { return ResultVOUtils.error(999, "库存不足!"); } } if (listInv != null && listInv.size() > 0 && updateReceiveDetailRequest.getCount() != null) { if (listInv.get(0).getReCount() < updateReceiveDetailRequest.getCount()) { return ResultVOUtils.error(999, "库存不足!"); } } boolean falg = receivedetailService.updateReceiveDetail(updateReceiveDetailRequest); if (falg) { return ResultVOUtils.success("成功"); } else { return ResultVOUtils.error(555, "更新失败!"); } } public List selectFilterInvPreProductRequest(FilterInvPreProductRequest filterInvPreProductRequest) { if (StrUtil.isNotBlank(filterInvPreProductRequest.getUdiCode())) { filterInvPreProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreProductRequest.getUdiCode())); } if (StrUtil.isBlank(filterInvPreProductRequest.getInvCode())) { List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); if (CollUtil.isNotEmpty(invCodes)) { filterInvPreProductRequest.setInvCodes(invCodes); } } List list = invPreProductService.filterListStock(filterInvPreProductRequest); return list; } public List selectfilterListStock(FilterInvPreinProductRequest filterInvPreinProductRequest) { boolean showSup = false; //前端控制表格显示字段 if (StrUtil.isNotBlank(filterInvPreinProductRequest.getUdiCode())) { filterInvPreinProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreinProductRequest.getUdiCode())); } if (StrUtil.isBlank(filterInvPreinProductRequest.getInvCode())) { List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); if (CollUtil.isNotEmpty(invCodes)) { filterInvPreinProductRequest.setInvCodes(invCodes); } } List list = invPreinProductService.filterListStock(filterInvPreinProductRequest); return list; } public List selectFilterInvProductRequest(FilterInvProductRequest filterInvProductRequest) { boolean showSup = false; //前端控制表格显示列字段 if (StrUtil.isNotBlank(filterInvProductRequest.getUdiCode())) { filterInvProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvProductRequest.getUdiCode())); } if (StrUtil.isBlank(filterInvProductRequest.getInvCode())) { List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); if (CollUtil.isNotEmpty(invCodes)) { filterInvProductRequest.setInvCodes(invCodes); } } List list = invProductService.filterListStock(filterInvProductRequest); return list; } @AuthRuleAnnotation("") @GetMapping("/udiwms/receive/order/del") public BaseResponse del(String orderIdFk) { boolean falg = receiveService.delReceive(orderIdFk); if (falg) { return ResultVOUtils.success(); } else { return ResultVOUtils.error(555, "删除失败!"); } } @AuthRuleAnnotation("") @GetMapping("/udiwms/receive/detail/delReceiveDetail") public BaseResponse delReceiveDetail(Integer id) { boolean falg = receivedetailService.delDetail(id + ""); if (falg) { return ResultVOUtils.success(); } else { return ResultVOUtils.error(555, "删除失败!"); } } @AuthRuleAnnotation("") @PostMapping("/udiwms/receive/order/audit") public BaseResponse audit(@RequestBody PurReceiveEntity purReceiveEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } Long userId = customerService.getUserId(); purReceiveEntity.setStatus(purReceiveEntity.getStatus()); purReceiveEntity.setUpdateUser(userId + ""); purReceiveEntity.setAuditRemark(purReceiveEntity.getAuditRemark()); purReceiveEntity.setAuditTime(new Date()); purReceiveEntity.setAuditUser(userId + ""); purReceiveEntity.setUpdateTime(new Date()); receiveService.updateOrder(purReceiveEntity); if (purReceiveEntity.getStatus() == 3) { //进行单据流转 purChangeService.purReceiveChange(purReceiveEntity); } return ResultVOUtils.success("成功"); } //根据单据生成新单据 public Boolean generateDocument(PurReceiveEntity purReceiveEntity) { //查询耗材表 purReceiveEntity = receiveService.selectById(purReceiveEntity.getId()); //查询耗材详情 List purReceiveDetailEntityList = receivedetailService.selectByOrderId(purReceiveEntity.getBillNo()); PurApplyEntity purApplyEntity = new PurApplyEntity(); //查询耗材要生成的业务单 BasicBusTypeChangeEntity basicBusTypeChangeEntity = new BasicBusTypeChangeEntity(); basicBusTypeChangeEntity = basicBusTypeChangeService.selectByOriginAction("HCLY"); if (basicBusTypeChangeEntity != null && StrUtil.isNotEmpty(basicBusTypeChangeEntity.getTargetBusAction()) && basicBusTypeChangeEntity.isEnable() == true) { purApplyEntity.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SG_ORDER, "yyyyMMdd"))); purApplyEntity.setBillDate(purReceiveEntity.getBillDate()); purApplyEntity.setStatus(basicBusTypeChangeEntity.getBusAuditStatus()); purApplyEntity.setRemark(purReceiveEntity.getRemark()); purApplyEntity.setInvCode(purReceiveEntity.getTargetInvCode()); purApplyEntity.setDeptCode(purReceiveEntity.getTargetDeptCode()); purApplyEntity.setTargetInvCode(purReceiveEntity.getInvCode()); purApplyEntity.setTargetDeptCode(purReceiveEntity.getDeptCode()); purApplyEntity.setCreateUser(purReceiveEntity.getAuditUser()); purApplyEntity.setCreateTime(timeProcess(purReceiveEntity.getCreateTime(), basicBusTypeChangeEntity.getBusBeforeTime())); purApplyEntity.setUpdateUser(purReceiveEntity.getAuditUser()); purApplyEntity.setUpdateTime(timeProcess(purReceiveEntity.getCreateTime(), basicBusTypeChangeEntity.getBusBeforeTime())); if (purApplyEntity.getStatus() == 3) { purApplyEntity.setAuditUser(""); purApplyEntity.setAuditTime(new Date()); } //插入申购主表 purApplyService.insert(purApplyEntity); //用stream流复制list List purApplyDetailEntityList = purReceiveDetailEntityList.stream().map(e -> { PurApplyDetailEntity d = new PurApplyDetailEntity(); d.setOrderIdFk(purApplyEntity.getId() + ""); d.setProductId(e.getRelIdFk()); UdiProductEntity udiProductEntity = udiProductService.findByNameCode(e.getNameCode()); d.setProductName(udiProductEntity.getCpmctymc()); d.setCount(e.getCount()); d.setSupId(e.getSupId()); d.setZczbhhzbapzbh(udiProductEntity.getZczbhhzbapzbh()); return d; }) .collect(Collectors.toList()); purApplyDetailService.insertPurApplyDetailEntity(purApplyDetailEntityList); //---------------------------------判断申购为已审核就生成计划单-------------------------------------------// PurPlanEntity purPlanEntity = new PurPlanEntity(); List purPlanDetailEntityList = new ArrayList<>(); if (purApplyEntity.getStatus() == 3) { basicBusTypeChangeEntity = basicBusTypeChangeService.selectByOriginAction(ConstantStatus.BUS_ORDER_CPSG); if (basicBusTypeChangeEntity != null && StrUtil.isNotEmpty(basicBusTypeChangeEntity.getTargetBusAction()) && basicBusTypeChangeEntity.isEnable() == true) { purPlanEntity.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.JH_ORDER, "yyyyMMdd"))); purPlanEntity.setBillDate(purReceiveEntity.getBillDate()); purPlanEntity.setStatus(basicBusTypeChangeEntity.getBusAuditStatus()); purPlanEntity.setRemark(purReceiveEntity.getRemark()); purPlanEntity.setInvCode(purReceiveEntity.getInvCode()); purPlanEntity.setDeptCode(purReceiveEntity.getDeptCode()); purPlanEntity.setCreateUser(purReceiveEntity.getAuditUser()); purPlanEntity.setCreateTime(timeProcess(purReceiveEntity.getCreateTime(), basicBusTypeChangeEntity.getBusBeforeTime())); purPlanEntity.setUpdateUser(purReceiveEntity.getAuditUser()); purPlanEntity.setUpdateTime(timeProcess(purReceiveEntity.getCreateTime(), basicBusTypeChangeEntity.getBusBeforeTime())); if (purPlanEntity.getStatus() == 3) { purPlanEntity.setAuditUser(""); purPlanEntity.setAuditTime(new Date()); } //插入计划主表 purPlanService.insert(purPlanEntity); //用stream流复制list purPlanDetailEntityList = purReceiveDetailEntityList.stream().map(e -> { PurPlanDetailEntity d = new PurPlanDetailEntity(); d.setOrderIdFk(purPlanEntity.getId() + ""); d.setProductId(e.getRelIdFk()); UdiProductEntity udiProductEntity = udiProductService.findByNameCode(e.getNameCode()); d.setProductName(udiProductEntity.getCpmctymc()); d.setCount(e.getCount()); d.setSupId(e.getSupId()); d.setZczbhhzbapzbh(udiProductEntity.getZczbhhzbapzbh()); return d; }).collect(Collectors.toList()); purPlanDetailService.insertPurPlanDetailEntity(purPlanDetailEntityList); //更新申购表信息插入计划单号 PurApplyEntity purApplyEntity1 = new PurApplyEntity(); purApplyEntity1.setId(purApplyEntity.getId()); purApplyEntity1.setPlanBillNo(purPlanEntity.getBillNo()); purApplyEntity1.setGeneratePlan(true); purApplyService.update(purApplyEntity1); //---------------------------------判断计划为已审核就生成计划单-------------------------------------------//\ PurOrderEntity purOrderEntity = new PurOrderEntity(); if (purPlanEntity.getStatus() == 3) { basicBusTypeChangeEntity = basicBusTypeChangeService.selectByOriginAction(ConstantStatus.BUS_ORDER_CGJH); if (basicBusTypeChangeEntity != null && StrUtil.isNotEmpty(basicBusTypeChangeEntity.getTargetBusAction()) && basicBusTypeChangeEntity.isEnable() == true) { purOrderEntity.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.CG_ORDER, "yyyyMMdd"))); purOrderEntity.setBillDate(purReceiveEntity.getBillDate()); purOrderEntity.setStatus(basicBusTypeChangeEntity.getBusAuditStatus()); purOrderEntity.setRemark(purReceiveEntity.getRemark()); purOrderEntity.setInvCode(purReceiveEntity.getInvCode()); purOrderEntity.setDeptCode(purReceiveEntity.getDeptCode()); purOrderEntity.setCreateUser(purReceiveEntity.getAuditUser()); purOrderEntity.setCreateTime(timeProcess(purReceiveEntity.getCreateTime(), basicBusTypeChangeEntity.getBusBeforeTime())); purOrderEntity.setUpdateUser(purReceiveEntity.getAuditUser()); purOrderEntity.setUpdateTime(new Date()); if (purOrderEntity.getStatus() == 3) { purOrderEntity.setAuditUser(""); purOrderEntity.setAuditTime(new Date()); } //插入订单主表 purOrderService.insert(purOrderEntity); //用stream流复制list List purOrderDetailEntityList = purReceiveDetailEntityList.stream().map(e -> { PurOrderDetailEntity d = new PurOrderDetailEntity(); d.setOrderIdFk(purOrderEntity.getId() + ""); d.setProductId(e.getRelIdFk()); UdiProductEntity udiProductEntity = udiProductService.findByNameCode(e.getNameCode()); d.setProductName(udiProductEntity.getCpmctymc()); d.setCount(e.getCount()); d.setSupId(e.getSupId()); d.setZczbhhzbapzbh(udiProductEntity.getZczbhhzbapzbh()); return d; }).collect(Collectors.toList()); purOrderDetailService.insertPurOrderDetailEntity(purOrderDetailEntityList); // 更新计划表信息插入订单单号 PurPlanEntity purPlanEntity1 = new PurPlanEntity(); purPlanEntity1.setId(purPlanEntity.getId()); purPlanEntity1.setStockOrderNo(purOrderEntity.getBillNo()); // purPlanEntity.sets(true); purPlanService.update(purPlanEntity1); } //---------------------------------判断计划为已审核就生成采购入库单-------------------------------------------//\ //查询申购单详情 List purPlanDetailEntities = purPlanDetailService.findByOrderId(purPlanEntity.getId() + ""); //对计划单里面的供应商进行分组 Map> map = purPlanDetailEntities.stream().collect(Collectors.groupingBy(PurPlanDetailEntity::getSupId)); String billNo = ""; if (basicBusTypeChangeEntity != null && StrUtil.isNotEmpty(basicBusTypeChangeEntity.getTargetAction()) && basicBusTypeChangeEntity.isEnable() == true) { for (Map.Entry> m : map.entrySet()) { //生产单据表信息 IoOrderEntity ioOrderEntity = new IoOrderEntity(); ioOrderEntity.setBillNo(gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd"))); ioOrderEntity.setCorpOrderId(CustomUtil.getDate()); ioOrderEntity.setMainAction(ConstantType.TYPE_PUT); ioOrderEntity.setAction(basicBusTypeChangeEntity.getTargetAction()); ioOrderEntity.setFromCorp(m.getKey()); ioOrderEntity.setFromType(ConstantStatus.FROM_PLAN); ioOrderEntity.setStatus(1); ioOrderEntity.setDealStatus(1); ioOrderEntity.setOrderType(1); ioOrderEntity.setCreateTime(new Date()); ioOrderEntity.setCreateUser(purReceiveEntity.getCreateUser()); ioOrderEntity.setUpdateTime(new Date()); ioOrderEntity.setUpdateUser(purReceiveEntity.getCreateUser()); ioOrderEntity.setCustomerId("110"); ioOrderEntity.setDeptCode(purReceiveEntity.getInvCode()); ioOrderEntity.setInvCode(purReceiveEntity.getDeptCode()); ioOrderService.insertOrder(ioOrderEntity); billNo += ioOrderEntity.getBillNo() + ","; //插入业务单表 for (PurPlanDetailEntity obj : m.getValue()) { BasicProductsEntity basicProductsEntity = purPlanDetailService.selectIoOrderDetailBiz(obj.getId()); IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); ioOrderDetailBizEntity.setOrderIdFk(ioOrderEntity.getBillNo()); ioOrderDetailBizEntity.setBindRlFk(Long.valueOf(obj.getProductId())); ioOrderDetailBizEntity.setCount(obj.getCount()); ioOrderDetailBizEntity.setUuidFk(basicProductsEntity.getUuid()); ioOrderDetailBizEntity.setNameCode(basicProductsEntity.getNameCode()); ioOrderDetailBizEntity.setCoName(basicProductsEntity.getCpmctymc()); ioOrderDetailBizEntity.setCertCode(basicProductsEntity.getZczbhhzbapzbh()); ioOrderDetailBizEntity.setYlqxzcrbarmc(basicProductsEntity.getYlqxzcrbarmc()); ioOrderDetailBizEntity.setManufacturer(basicProductsEntity.getManufactory()); ioOrderDetailBizEntity.setMeasname(basicProductsEntity.getMeasname()); ioOrderDetailBizEntity.setSpec(basicProductsEntity.getGgxh()); if (basicProductsEntity.getPrice() != null) { ioOrderDetailBizEntity.setPrice(BigDecimal.valueOf(basicProductsEntity.getPrice())); } ioOrderDetailBizEntity.setSupId(obj.getSupId()); ioOrderDetailBizService.insert(ioOrderDetailBizEntity); } } PurPlanEntity purPlanEntity1 = new PurPlanEntity(); purPlanEntity1.setId(purPlanEntity.getId()); purPlanEntity1.setStockOrderNo(billNo.substring(0, billNo.length() - 1)); purPlanService.update(purPlanEntity1); } } } } } return true; } /** * 添加申购单到采购单里面 */ @PostMapping("/receive/order/addOrderDetailAndApply") public BaseResponse addOrderDetailAndApply(@RequestBody purReceiveRequest purReceiveRequest) { if (purReceiveRequest.getOrderId() == null || purReceiveRequest.getId() == null) { return ResultVOUtils.error(999, "参数错误!"); } //查询领用单详情 List purPlanDetailEntityList = receivedetailService.selectByOrderId(purReceiveRequest.getOrderId()); //使用stream拷贝list List purOrderDetailEntityList = purPlanDetailEntityList.stream() .map(e -> { PurApplyDetailEntity d = new PurApplyDetailEntity(); d.setProductId(e.getRelIdFk()); UdiProductEntity udiProductEntity = udiProductService.findByNameCode(e.getNameCode()); d.setProductName(udiProductEntity.getCpmctymc()); d.setCount(e.getCount()); d.setSupId(e.getSupId()); d.setZczbhhzbapzbh(udiProductEntity.getZczbhhzbapzbh()); return d; }) .collect(Collectors.toList()); for (PurApplyDetailEntity obj : purOrderDetailEntityList) { obj.setOrderIdFk(purReceiveRequest.getId() + ""); } //获取详情表信息 List purOrderDetailEntities = purApplyDetailService.findByOrderId(purReceiveRequest.getId()); List ids = new ArrayList<>(); for (PurApplyDetailEntity obj : purOrderDetailEntities) { for (PurApplyDetailEntity obj1 : purOrderDetailEntityList) { if (obj.getProductId().equals(obj1.getProductId())) { //获取存在在详情表和申购单里面一样的产品 ids.add(obj.getId().longValue()); break; } } } //删除存在的产品 if (ids.size() > 0) { purApplyDetailService.deleteByIds(ids); } boolean falg = purApplyDetailService.insertPurApplyDetailEntity(purOrderDetailEntityList); if (falg) { //查询申购单 return ResultVOUtils.success(purReceiveRequest.getId()); } else { return ResultVOUtils.success("添加失败"); } } @AuthRuleAnnotation("") @PostMapping("/udiwms/receive/detail/addWarlockBag") public BaseResponse updateReceiveByWarlockBag(@RequestBody AddReceiveDetailRequest addReceiveDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } AuthAdmin authAdmin = getUser(); String orderNo = addReceiveDetailRequest.getPurReceiveEntity().getBillNo(); if (addReceiveDetailRequest.getPurReceiveEntity() == null) return ResultVOUtils.error(500, "未指定订单"); if (StringUtils.isEmpty(addReceiveDetailRequest.getBagId())) { return ResultVOUtils.error(500, "未选择术式套包信息"); }else { String bagId = addReceiveDetailRequest.getBagId(); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setDestinyId(bagId + ""); filterUdiRelRequest.setDiType(1); List list = basicDestinyRelMapper.filterDestinyProducts(filterUdiRelRequest); if (CollUtil.isEmpty(list)) throw new JsonException("术式套包数据为空!"); List datas = new ArrayList<>(); list.forEach( x -> { AddReceiveDetailRequest.DetaiData detaiData = new AddReceiveDetailRequest.DetaiData(); detaiData.setRelId(x.getRelIdFk()); detaiData.setSupId(x.getSupId()); detaiData.setNameCode(x.getNameCode()); detaiData.setPrice(x.getPrice()); detaiData.setCount(x.getCount()); datas.add(detaiData); }); addReceiveDetailRequest.setDatas(datas); } if (CollUtil.isEmpty(addReceiveDetailRequest.getDatas())) { return ResultVOUtils.error(500, "未选择产品信息"); } PurReceiveEntity purReceiveEntity = addReceiveDetailRequest.getPurReceiveEntity(); if (StrUtil.isEmpty(purReceiveEntity.getBillNo())) { InvWarehouseEntity curWarehouseEntity = invWarehouseService.findByInvSubByCode(purReceiveEntity.getInvCode()); InvWarehouseEntity targetWarehouseEntity = invWarehouseService.findByInvSubByCode(purReceiveEntity.getTargetInvCode()); orderNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.LIN_YONG, "yyyyMMdd")); purReceiveEntity.setBillNo(orderNo); purReceiveEntity.setCreateUser(authAdmin.getId() + ""); purReceiveEntity.setCreateTime(new Date()); purReceiveEntity.setStatus(1); purReceiveEntity.setDeptCode(curWarehouseEntity.getParentId()); purReceiveEntity.setTargetDeptCode(targetWarehouseEntity.getParentId()); receiveService.insertOrder(purReceiveEntity); } for (AddReceiveDetailRequest.DetaiData detaiData : addReceiveDetailRequest.getDatas()) { PurReceiveDetailEntity purReceiveDetailEntity = new PurReceiveDetailEntity(); purReceiveDetailEntity.setOrderIdFk(purReceiveEntity.getBillNo()); purReceiveDetailEntity.setNameCode(detaiData.getNameCode()); purReceiveDetailEntity.setExpireDate(detaiData.getExpireDate()); purReceiveDetailEntity.setProductDate(detaiData.getProductDate()); purReceiveDetailEntity.setRelIdFk(detaiData.getRelId()); purReceiveDetailEntity.setBatchNo(detaiData.getBatchNo()); purReceiveDetailEntity.setPrice(detaiData.getPrice()); purReceiveDetailEntity.setSupId(detaiData.getSupId()); receivedetailService.insert(purReceiveDetailEntity); } purReceiveEntity.setUpdateTime(new Date()); receiveService.updateOrder(purReceiveEntity); return ResultVOUtils.success(orderNo); } public Date timeProcess(Date date, Integer timeCount) { Calendar rightNow = Calendar.getInstance(); rightNow.setTime(date); rightNow.add(Calendar.HOUR, timeCount); Date dt1 = rightNow.getTime(); return dt1; } }