diff --git a/src/main/java/com/spring/modules/material/controller/IssureSoController.java b/src/main/java/com/spring/modules/material/controller/IssureSoController.java new file mode 100644 index 0000000..052d4d5 --- /dev/null +++ b/src/main/java/com/spring/modules/material/controller/IssureSoController.java @@ -0,0 +1,144 @@ +package com.spring.modules.material.controller; + +import com.spring.common.utils.PageUtils; +import com.spring.common.utils.R; +import com.spring.modules.material.data.*; +import com.spring.modules.material.service.IssureSoService; +import com.spring.modules.material.service.PoReceiveService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping(value = "/issureSo") +public class IssureSoController { + + @Autowired + private IssureSoService issureSoService; + + /** + * @Description TODO + * @Title searchTransHeader + * @param data + * @author rq + * @date 2024/5/31 11:45 + * @return R + * @throw + */ + @PostMapping(value="/searchTransHeader") + public R searchTransHeader(@RequestBody TransHeaderData data) { + PageUtils page = issureSoService.searchTransHeader(data); + return R.ok().put("page", page); + } + + /** + * @Description TODO + * @Title searchTransDetail + * @param data + * @author rq + * @date 2024/5/31 15:23 + * @return R + * @throw + */ + @PostMapping(value="/searchTransDetail") + public R searchTransDetail(@RequestBody TransHeaderData data){ + List rows = issureSoService.searchTransDetail(data); + return R.ok().put("rows", rows); + } + + @PostMapping(value="/searchTransDetailSub") + public R searchTransDetailSub(@RequestBody TransHeaderData data){ + List rows = issureSoService.searchTransDetailSub(data); + return R.ok().put("rows", rows); + } + + + @PostMapping(value="/getWareHouseList") + public R getWareHouseList(@RequestBody WareHouseSearchOutData data){ + List rows = issureSoService.getWareHouseList(data); + return R.ok().put("rows", rows); + } + /** + * @Description 保存入库单抬头 + * @Title saveTransHeaderData + * @param data + * @author rq + * @date 2024/5/31 17:37 + * @return R + * @throw + */ + @PostMapping(value="/saveTransHeaderData") + public R saveTransHeaderData(@RequestBody TransHeaderData data) { + String result= issureSoService.saveTransHeaderData(data); + return R.ok().put("transNo",result); + } + /** + * @Description TODO + * @Title searchTransDetailAndSubCach + * @param data + * @author rq + * @date 2024/6/4 11:31 + * @return R + * @throw + */ + @PostMapping(value="/searchTransDetailAndSubCach") + public R searchTransDetailAndSubCach(@RequestBody TransHeaderData data) { + TransHeaderData row= issureSoService.searchTransHeaderData(data); + List rows =issureSoService.searchTransDetailsubCachData(data); + return R.ok().put("row",row).put("rows",rows); + } + /** + * @Description 手工创建缓存卷 + * @Title createNewCachRoll + * @param data + * @author rq + * @date 2024/6/4 14:16 + * @return R + * @throw + */ + @PostMapping(value="/createNewCachRoll") + public R createNewCachRoll(@RequestBody TransDetailsubCachData data) { + issureSoService.createNewCachRoll(data); + return R.ok(); + } + + @PostMapping(value="/deleteSubCach") + public R deleteSubCach(@RequestBody TransDetailsubCachData data) { + issureSoService.deleteSubCach(data); + return R.ok(); + } + + /** + * @Description TODO + * @Title finalSaveTransHeaderDetail + * @param data + * @author rq + * @date 2024/6/4 15:48 + * @return R + * @throw + */ + @PostMapping(value="/finalSaveTransHeaderDetail") + public R finalSaveTransHeaderDetail(@RequestBody TransHeaderData data) { + issureSoService.finalSaveTransHeaderDetail(data); + return R.ok(); + } + /** + * @Description 删除入库主表 + * @Title deleteTransHeaderData + * @param data + * @author rq + * @date 2024/6/5 14:55 + * @return R + * @throw + */ + @PostMapping(value="/deleteTransHeaderData") + public R deleteTransHeaderData(@RequestBody TransHeaderData data) { + issureSoService.deleteTransHeaderData(data); + return R.ok(); + } + +} diff --git a/src/main/java/com/spring/modules/material/dao/IssureSoMapper.java b/src/main/java/com/spring/modules/material/dao/IssureSoMapper.java new file mode 100644 index 0000000..74f0d79 --- /dev/null +++ b/src/main/java/com/spring/modules/material/dao/IssureSoMapper.java @@ -0,0 +1,48 @@ +package com.spring.modules.material.dao; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.spring.modules.material.data.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Mapper +@Repository +public interface IssureSoMapper { + + IPage searchTransHeader(Page page, @Param("query") TransHeaderData data); + + + List searchTransDetail(TransHeaderData data); + + List searchTransDetailSub(TransHeaderData data); + + List getWareHouseList(WareHouseSearchOutData inData); + + TransHeaderData searchTransHeaderData(TransHeaderData data); + + List searchTransDetailsubCachData(TransHeaderData inData); + + void createNewCachRoll(TransDetailsubCachData data); + + List getDetailDataByCach(TransHeaderData inData); + + Double getNextTransHeaderSeqNo (TransHeaderData inData); + + void saveTransDetailData(TransDetailData inData); + + + + void batchInsertTransDetailSub( List inlist); + + void deleteTransCach(TransHeaderData inData); + + void deleteSubCach(TransDetailsubCachData inData); + + void deleteTransHeaderData(TransHeaderData inData); + + void updateTransHeader(TransHeaderData inData); +} diff --git a/src/main/java/com/spring/modules/material/service/Impl/IssureSoServiceImpl.java b/src/main/java/com/spring/modules/material/service/Impl/IssureSoServiceImpl.java new file mode 100644 index 0000000..aa65d88 --- /dev/null +++ b/src/main/java/com/spring/modules/material/service/Impl/IssureSoServiceImpl.java @@ -0,0 +1,220 @@ +package com.spring.modules.material.service.Impl; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.spring.common.utils.DateUtil; +import com.spring.common.utils.PageUtils; +import com.spring.modules.base.dao.NormalSearchMapper; +import com.spring.modules.base.entity.PartInformationEntity; +import com.spring.modules.base.service.TransNoControlService; +import com.spring.modules.material.dao.IssureSoMapper; +import com.spring.modules.material.data.*; +import com.spring.modules.material.entity.Supplier; +import com.spring.modules.material.service.IssureSoService; +import com.spring.modules.report.dao.ProcedureDao; +import com.spring.modules.sys.entity.SysUserEntity; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Service +public class IssureSoServiceImpl implements IssureSoService { + @Autowired + private ProcedureDao procedureDao; + @Autowired + private NormalSearchMapper normalSearchMapper; + @Autowired + private IssureSoMapper issureSoMapper; + @Autowired + private TransNoControlService transNoControlService; + @Override + public PageUtils searchTransHeader(TransHeaderData data) { + IPage resultList = this.issureSoMapper.searchTransHeader(new Page(data.getPage(), data.getLimit()), data); + return new PageUtils(resultList); + } + + @Override + public List searchTransDetail(TransHeaderData data){ + return issureSoMapper.searchTransDetail(data); + } + + @Override + public List searchTransDetailSub(TransHeaderData data){ + return issureSoMapper.searchTransDetailSub(data); + } + + @Override + public List getWareHouseList(WareHouseSearchOutData inData){ + return issureSoMapper.getWareHouseList(inData); + } + + @Override + public String saveTransHeaderData(TransHeaderData inData){ + if("0".equals(inData.getTransNo())){ + // 公共参数 + String site = inData.getSite(); + String wareHouseId = inData.getWarehouseID(); + String transTypeDb = "SI"; + String transDate = DateUtil.getStringDate(inData.getTransDate(),"yyyy-MM-dd"); + String userId = inData.getEnterBy(); + String receiver = inData.getReceiver(); + String partnerType = ""; + String partnerID = ""; + String remark=""; + String orderNo=inData.getOrderRef1(); + String projectID=""; + List params = new ArrayList<>(); + params.add(site); + params.add(wareHouseId); + params.add(transTypeDb); + params.add(transDate); + params.add(userId); + params.add(receiver); + params.add(partnerType); + params.add(partnerID); + params.add(remark); + params.add(orderNo); + params.add(projectID); + // 执行方法 + List> resultList = procedureDao.getProcedureData("LNJ_Create_TransHeader", params); + String code = String.valueOf(resultList.get(0).get("result_code")); + if ("400".equalsIgnoreCase(code)) { + String msg = String.valueOf(resultList.get(0).get("result_msg")); + throw new RuntimeException(msg); + } + return String.valueOf(resultList.get(0).get("result_msg")); + + }else { + List detailList= issureSoMapper.searchTransDetail(inData); + if(detailList.size()>0){ + throw new RuntimeException("发料单有明细记录无法修改"); + } + List searchTransDetailsubCachData= issureSoMapper.searchTransDetailsubCachData(inData); + if(searchTransDetailsubCachData.size()>0){ + throw new RuntimeException("发料单有扫描标签记录无法修改"); + } + // if(inData.getPartnerID()!=null&&!"".equals(inData.getPartnerID())){ + // Supplier checkSupplier=new Supplier(); + // checkSupplier.setSite(inData.getSite()); + // checkSupplier.setActive("Y"); + // checkSupplier.setSupplierID(inData.getPartnerID()); + // List checkSupplierList=normalSearchMapper.getSupplierListForSearch(checkSupplier); + // if(checkSupplierList.size()==0){ + // throw new RuntimeException("供应商不可用或者不存在"); + // } + // } + SysUserEntity sysUserEntity=new SysUserEntity(); + sysUserEntity.setUsername(inData.getReceiver()); + List getUserListForSearch=normalSearchMapper.getUserListForSearch(sysUserEntity); + if(getUserListForSearch.size()==0){ + throw new RuntimeException("经手人不可用或者不存在"); + } + issureSoMapper.updateTransHeader(inData); + return inData.getTransNo(); + } + } + + + @Override + public TransHeaderData searchTransHeaderData(TransHeaderData inData){ + return issureSoMapper.searchTransHeaderData(inData); + + } + + @Override + public List searchTransDetailsubCachData(TransHeaderData inData){ + return issureSoMapper.searchTransDetailsubCachData(inData); + + } + + @Override + @Transactional + public void createNewCachRoll(TransDetailsubCachData inData){ + SysUserEntity sysUserEntity = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + PartInformationEntity newData=new PartInformationEntity(); + newData.setPartNo(inData.getPartNo()); + newData.setSite(inData.getSite()); + newData.setActive("Y"); + List checkPartNo=normalSearchMapper.getPartListForSearch(newData); + if(checkPartNo.size()==0){ + throw new RuntimeException("物料不存在或者不在用"); + } + for (int i = 0; i < inData.getRollNumber(); i++) { + String rollNo= transNoControlService.transNo(inData.getSite(), "RollNo"); + inData.setRollNo(rollNo); + inData.setEnterBy(sysUserEntity.getUsername()); + issureSoMapper.createNewCachRoll(inData); + } + } + @Override + public void deleteSubCach(TransDetailsubCachData inData){ + issureSoMapper.deleteSubCach(inData); + } + + @Override + public void deleteTransHeaderData(TransHeaderData inData){ + List detailList= issureSoMapper.searchTransDetail(inData); + if(detailList.size()>0){ + throw new RuntimeException("入库单有明细记录无法删除"); + } + List searchTransDetailsubCachData= issureSoMapper.searchTransDetailsubCachData(inData); + if(searchTransDetailsubCachData.size()>0){ + throw new RuntimeException("入库单有扫描标签记录无法删除"); + } + issureSoMapper.deleteTransHeaderData(inData); + } + + + @Override + @Transactional + public void finalSaveTransHeaderDetail(TransHeaderData inData){ + SysUserEntity sysUserEntity = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + String userName=sysUserEntity.getUsername(); + inData.setEnterName(userName); + // + List transDetailData=issureSoMapper.getDetailDataByCach(inData); + if(transDetailData.size()==0){ + throw new RuntimeException("没有缓存卷需要保存"); + } + for (int i = 0; i < transDetailData.size(); i++) { + Double getNextTransHeaderSeqNo=issureSoMapper.getNextTransHeaderSeqNo(inData); + transDetailData.get(i).setItemNo(getNextTransHeaderSeqNo); + issureSoMapper.saveTransDetailData(transDetailData.get(i)); + } + TransHeaderData getHeader= issureSoMapper.searchTransHeaderData(inData); + List subData=issureSoMapper.searchTransDetailsubCachData(inData); + List inList=new ArrayList<>(); + for (int i = 0; i < transDetailData.size(); i++) { + Double seqNo=0.0; + for (int j = 0; j 0){ throw new RuntimeException("入库单有扫描标签记录无法修改"); } - Supplier checkSupplier=new Supplier(); - checkSupplier.setSite(inData.getSite()); - checkSupplier.setActive("Y"); - checkSupplier.setSupplierID(inData.getPartnerID()); - List checkSupplierList=normalSearchMapper.getSupplierListForSearch(checkSupplier); - if(checkSupplierList.size()==0){ - throw new RuntimeException("供应商不可用或者不存在"); + if(inData.getPartnerID()!=null&&!"".equals(inData.getPartnerID())){ + Supplier checkSupplier=new Supplier(); + checkSupplier.setSite(inData.getSite()); + checkSupplier.setActive("Y"); + checkSupplier.setSupplierID(inData.getPartnerID()); + List checkSupplierList=normalSearchMapper.getSupplierListForSearch(checkSupplier); + if(checkSupplierList.size()==0){ + throw new RuntimeException("供应商不可用或者不存在"); + } } SysUserEntity sysUserEntity=new SysUserEntity(); sysUserEntity.setUsername(inData.getReceiver()); diff --git a/src/main/java/com/spring/modules/material/service/IssureSoService.java b/src/main/java/com/spring/modules/material/service/IssureSoService.java new file mode 100644 index 0000000..c6f3c50 --- /dev/null +++ b/src/main/java/com/spring/modules/material/service/IssureSoService.java @@ -0,0 +1,38 @@ +package com.spring.modules.material.service; + +import com.spring.common.utils.PageUtils; +import com.spring.modules.material.data.*; + +import java.util.List; + +public interface IssureSoService { + PageUtils searchTransHeader(TransHeaderData data); + + List searchTransDetail(TransHeaderData data); + + List searchTransDetailSub(TransHeaderData data); + + List getWareHouseList(WareHouseSearchOutData inData); + + String saveTransHeaderData(TransHeaderData data); + + /** + * @Description TODO + * @Title searchTransDetail + * @param inData + * @author rq + * @date 2024/6/4 11:34 + * @return TransDetailData + * @throw + */ + TransHeaderData searchTransHeaderData(TransHeaderData inData); + + List searchTransDetailsubCachData(TransHeaderData inData); + + void createNewCachRoll(TransDetailsubCachData data); + + void finalSaveTransHeaderDetail(TransHeaderData inData); + + void deleteSubCach(TransDetailsubCachData data); + void deleteTransHeaderData(TransHeaderData inData); +} diff --git a/src/main/resources/mapper/material/IssureSoMapper.xml b/src/main/resources/mapper/material/IssureSoMapper.xml new file mode 100644 index 0000000..e4f92fb --- /dev/null +++ b/src/main/resources/mapper/material/IssureSoMapper.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + insert into TransDetailsub_cach(Site,TransNo,PartNo,RollNo,RollQty,BatchNo,wdrNo,LocationID,ManufactureDate, + ExpiredDate,enterBy,enterDate) + values(#{site},#{transNo},#{partNo},#{rollNo},#{rollQty},#{batchNo},#{wdrNo},#{locationID},#{manufactureDate}, + #{expiredDate},#{enterBy},GetDate()) + + + + + + + + insert into TransDetail(TransNo,Site,ItemNo,PartNo,LocationID,TransQty,Direction,BatchNo,StandCost, + ActualCost,Price,Freight,Duty,OrderRef1,VitualPartFlag,ManufactureDate, + ExpiredDate,TransQty2,wdr_no,enterDate,enterBy) + values(#{transNo},#{site},#{itemNo,jdbcType=DOUBLE},#{partNo},#{locationID},#{transQty},#{direction},#{batchNo},#{standCost}, + #{actualCost},#{price},#{freight},#{duty},#{orderRef1},#{vitualPartFlag},#{manufactureDate}, + #{expiredDate},#{transQty2},#{wdrNo},GetDate(),#{enterBy}) + + + + + insert into TransDetailsub + (TransNo,Site,SeqNo,itemNo,LocationID,BatchNo,BoxNo,RollNo,RollQty,orderRef1) VALUES + + (#{item.transNo}, #{item.site}, #{item.seqNo}, #{item.itemNo}, #{item.locationID}, #{item.batchNo},'', #{item.rollNo,jdbcType=VARCHAR}, #{item.rollQty}, #{item.orderRef1}) + + + + + delete from TransDetailsub_cach where TransNo=#{transNo} and site=#{site} + + + + + + delete from transHeader where site=#{site} and transNo=#{transNo} + + + + update transHeader set WarehouseID=#{warehouseID} ,PartnerID=#{partnerID},Receiver=#{receiver},orderRef1=#{orderRef1},transDate=#{transDate} where site=#{site} and transNo=#{transNo} + + \ No newline at end of file diff --git a/src/main/resources/mapper/material/PoReceiveMapper.xml b/src/main/resources/mapper/material/PoReceiveMapper.xml index 6462d68..897288b 100644 --- a/src/main/resources/mapper/material/PoReceiveMapper.xml +++ b/src/main/resources/mapper/material/PoReceiveMapper.xml @@ -55,7 +55,7 @@ SELECT top 1 TransNo,Site,WarehouseID,TransDate,Receiver,PartnerID,PartnerName, PartnerType,AuthorizeFlag,AuthorizeDate,Authorizor,TransferFlag,TransferDate,TransferGuys,VoucherDate,ProjectID, - ProjectName,EnterDate,Remark,UseLocation,OrderRef1,LinkOrderFlag,DelAddID,Status,dbo.get_user_display(Receiver) receiveName + ProjectName,EnterDate,Remark,UseLocation,OrderRef1,LinkOrderFlag,DelAddID,Status,dbo.get_user_display(Receiver) receiverName FROM TransHeader where site=#{site} and TransNo=#{transNo}