Просмотр исходного кода

1.出入库单更新已转数,和采购单入库状态

zhoudw 7 лет назад
Родитель
Сommit
4f81c8f059

+ 1 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/ProdIODetailMapper.java

@@ -41,4 +41,5 @@ public interface ProdIODetailMapper extends CommonBaseMapper<ProdIODetail> {
     void batchUpdate(List<ProdIODetail> list);
 
 
+    void updatePurchaseYqty(Long id);
 }

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -17,4 +17,6 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
     String validateAudit(List<DocBaseDTO> list);
 
     List<Purchase> selectByTest(String con);
+
+    void updateAcceptstatus(Long id);
 }

+ 43 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java

@@ -0,0 +1,43 @@
+package com.usoftchina.saas.purchase.service;
+
+import com.usoftchina.saas.base.service.CommonBaseService;
+import com.usoftchina.saas.common.dto.DocSavedDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import com.usoftchina.saas.purchase.mapper.ProdInOutMapper;
+import com.usoftchina.saas.purchase.po.ProdInOut;
+
+/**
+ * Created by zdw
+ * 2018-10-17 13:39.
+ */
+public interface ProdInOutService extends CommonBaseService<ProdInOutMapper, ProdInOut> {
+
+    /**
+     * 获取出入单表单
+     *
+     * @param id
+     * @return
+     */
+    ProdInOutFormDTO getFormData(Long id);
+
+    /**
+     * 保存出入库单
+     *
+     * @param formdata
+     * @return
+     */
+    DocSavedDTO saveFormData(ProdInOutFormDTO formdata);
+
+    /**
+     * 删除出入库单
+     * @param id
+     */
+    void delete(Long id);
+
+    DocSavedDTO audit(ProdInOutFormDTO formData);
+
+
+
+
+
+}

+ 180 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -0,0 +1,180 @@
+package com.usoftchina.saas.purchase.service.impl;
+
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.common.dto.DocSavedDTO;
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.purchase.dto.ProdIODetailDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import com.usoftchina.saas.purchase.mapper.ProdIODetailMapper;
+import com.usoftchina.saas.purchase.mapper.ProdInOutMapper;
+import com.usoftchina.saas.purchase.mapper.PurchaseMapper;
+import com.usoftchina.saas.purchase.po.ProdIODetail;
+import com.usoftchina.saas.purchase.po.ProdIODetailExample;
+import com.usoftchina.saas.purchase.po.ProdInOut;
+import com.usoftchina.saas.purchase.po.Status;
+import com.usoftchina.saas.purchase.service.ProdInOutService;
+import com.usoftchina.saas.utils.BeanMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by zdw
+ * 2018-10-17 13:48.
+ */
+@Service
+public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper, ProdInOut> implements ProdInOutService{
+
+    @Autowired
+    private ProdIODetailMapper prodIODetailMapper;
+    @Autowired
+    private PurchaseMapper purchaseMapper;
+
+
+
+    @Override
+    public ProdInOutFormDTO getFormData(Long id) {
+        ProdInOutFormDTO prodInOutFormDTO = new ProdInOutFormDTO();
+        //查询主表
+        ProdInOut prodInOut = getMapper().selectByPrimaryKey(id);
+        //将prodInOut实体对象转化为传输对象
+        ProdInOutDTO main = BeanMapper.map(prodInOut,ProdInOutDTO.class);
+        //查询从表
+        ProdIODetailExample prodIODetailExample = new ProdIODetailExample();
+        ProdIODetailExample.Criteria cta = prodIODetailExample.createCriteria();
+        cta.andPd_piidEqualTo(id.intValue());
+        List<ProdIODetail> prodIODetails =prodIODetailMapper.selectByExample(prodIODetailExample);
+        List<ProdIODetailDTO> items = BeanMapper.mapList(prodIODetails,ProdIODetailDTO.class);
+
+        prodInOutFormDTO.setMain(main);
+        prodInOutFormDTO.setItems(items);
+        return prodInOutFormDTO;
+    }
+
+    @Override
+    public DocSavedDTO saveFormData(ProdInOutFormDTO formdata) {
+        if (null == formdata || null == formdata.getMain()){
+            throw new BizException(500, "数据为空,请填写后再保存");
+        }
+        //获取主表信息
+        ProdInOutDTO main = formdata.getMain();
+        List<ProdIODetailDTO> items = formdata.getItems();
+        //插入从表数据
+        List<ProdIODetail> insertDetails = new ArrayList<>();
+        //更新从表数据
+        List<ProdIODetail> updateDetails = new ArrayList<>();
+        DocSavedDTO saveDTO = new DocSavedDTO();
+        Long pi_id = main.getId();
+        String pi_inoutno = main.getPi_inoutno();
+        ProdInOut prodInOut = BeanMapper.map(main,ProdInOut.class);
+
+        //编号获取
+        if (StringUtils.isEmpty(pi_inoutno)) {
+            pi_inoutno = "PI" + Math.random() * 1000;
+            prodInOut.setPi_inoutno(pi_inoutno);
+        }
+        saveDTO.setCode(pi_inoutno);
+        //判断更新与保存动作
+        if (!StringUtils.isEmpty(pi_id)){
+            //更新主表
+            getMapper().updateByPrimaryKey(prodInOut);
+            //添加从表传输对象
+            for (ProdIODetailDTO item : items) {
+                ProdIODetail detail = BeanMapper.map(item,ProdIODetail.class);
+                detail.setPd_piid(pi_id);
+                detail.setPd_inoutno(pi_inoutno);
+                if (!StringUtils.isEmpty(detail.getId())) {
+                    updateDetails.add(detail);
+                } else {
+                    insertDetails.add(detail);
+                }
+            }
+            //插入从表
+            if (insertDetails.size()>0) {
+                prodIODetailMapper.batchInsert(insertDetails);
+            }
+            //更新从表
+            if (updateDetails.size()>0) {
+                prodIODetailMapper.batchUpdate(updateDetails);
+            }
+            saveDTO.setId(pi_id);
+            return saveDTO;
+        }
+
+        //插入操作
+        getMapper().insertSelective(prodInOut);
+        pi_id = prodInOut.getId();
+        //添加从表传输对象
+        for (ProdIODetailDTO item : items) {
+            ProdIODetail detail = BeanMapper.map(item, ProdIODetail.class);
+            detail.setPd_piid(pi_id);
+            detail.setPd_inoutno(pi_inoutno);
+            insertDetails.add(detail);
+        }
+        //插入从表
+        if (insertDetails.size()>0) {
+
+            prodIODetailMapper.batchInsert(insertDetails);
+        }
+        saveDTO.setId(pi_id);
+        return saveDTO;
+    }
+
+    @Override
+    public void delete(Long id) {
+        singleDelete(id);
+    }
+
+    private void singleDelete(Long id) {
+        if (null != id) {
+            //删除主键
+            getMapper().deleteByPrimaryKey(id.intValue());
+
+            //删除从表
+            ProdIODetailExample prodIODetailExample = new ProdIODetailExample();
+            ProdIODetailExample.Criteria cta = prodIODetailExample.createCriteria();
+            cta.andPd_piidEqualTo(id.intValue());
+            prodIODetailMapper.deleteByExample(prodIODetailExample);
+       }
+    }
+
+
+    @Override
+    public DocSavedDTO audit(ProdInOutFormDTO formData) {
+        Long id = null;
+        DocSavedDTO savedDTO = new DocSavedDTO();
+        if (null != formData) {
+            id = formData.getMain().getId();
+            if (StringUtils.isEmpty(id)) {
+                DocSavedDTO saveDTO = saveFormData(formData);
+                id = saveDTO.getId();
+            }
+            singleAudit(id);
+        }
+        savedDTO.setId(id);
+        return savedDTO;
+    }
+
+    private void singleAudit(Long id) {
+        ProdInOut prodInOut = new ProdInOut();
+        prodInOut.setId(id);
+        prodInOut.setPi_status(Status.AUDITED.getDisplay());
+        prodInOut.setPi_statuscode(Status.AUDITED.name());
+        getMapper().updateByPrimaryKeySelective(prodInOut);
+        //更新已转数
+        updatePurchaseYqty(id);
+    }
+
+    private void updatePurchaseYqty(Long id) {
+        //更新已转数
+        prodIODetailMapper.updatePurchaseYqty(id);
+        //更新采购单入库状态
+        purchaseMapper.updateAcceptstatus(id);
+    }
+
+
+}

+ 13 - 0
applications/purchase/purchase-server/src/main/resources/mapper/ProdIODetailMapper.xml

@@ -926,4 +926,17 @@
     </foreach>
   </update>
 
+  <update id="updatePurchaseYqty" parameterType="java.lang.Long">
+    update purchasedetail
+    join
+    (select b.yqty,b.pd_orderid FROM
+    (select pd_orderid from prodiodetail where pd_piid = #{id,jdbcType=INTEGER}) a
+    left join
+    (select sum(pd_inqty)-sum(pd_outqty) yqty,pd_orderid from prodiodetail  left join  prodinout on pd_piid = pi_id  where pi_statuscode='AUDITED'
+    GROUP BY pd_orderid) b on a.pd_orderid = b.pd_orderid) c
+    on pd_id = c.pd_orderid
+    set PD_YQTY = c.yqty
+  </update>
+
+
 </mapper>

+ 10 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -404,4 +404,14 @@
     </if>
   </where>
   </select>
+
+  <update id="updateAcceptstatus" parameterType="long">
+    update purchase set PU_ACCEPTSTATUS='部分入库',PU_ACCEPTSTATUSCODE='PART2IN'
+    where pu_id = (
+    select purchasedetail.PD_PUID from  purchasedetail  LEFT join prodiodetail on purchasedetail.pd_id =prodiodetail.pd_orderid
+    where purchasedetail.PD_QTY &lt;&gt; purchasedetail.PD_YQTY  and  prodiodetail.pd_piid = #{id,jdbcType=INTEGER} GROUP BY PD_PUID)
+  </update>
+
+
+
 </mapper>

+ 82 - 0
applications/purchase/purchase-server/src/main/test/ProdInOutTest.java

@@ -0,0 +1,82 @@
+import com.usoftchina.saas.purchase.PurchaseApplication;
+import com.usoftchina.saas.purchase.dto.ProdIODetailDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import com.usoftchina.saas.purchase.mapper.ProdIODetailMapper;
+import com.usoftchina.saas.purchase.service.ProdInOutService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Created by zdw
+ * 2018-10-11 17:45.
+ */
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = PurchaseApplication.class)
+public class ProdInOutTest {
+    @Autowired
+    private ProdInOutService prodInOutService;
+
+    @Autowired
+    private ProdIODetailMapper prodIODetailMapper;
+
+
+
+    @Test
+    public void testsave(){
+        ProdInOutFormDTO prodInOutFormDTO = new ProdInOutFormDTO();
+
+        ProdInOutDTO prodInOutDTO = new ProdInOutDTO();
+        prodInOutDTO.setCompanyId((long)11);
+        prodInOutDTO.setPi_inoutno("test1");
+        prodInOutDTO.setPi_class("采购验收单");
+
+        ProdIODetailDTO prodIODetailDTO = new ProdIODetailDTO();
+        prodIODetailDTO.setCompanyId((long)11);
+        prodIODetailDTO.setPd_inoutno("test1");
+
+        List<ProdIODetailDTO> prodIODetailDTOS = new ArrayList<>();
+
+        prodIODetailDTOS.add(prodIODetailDTO);
+
+        prodInOutFormDTO.setMain(prodInOutDTO);
+        prodInOutFormDTO.setItems(prodIODetailDTOS);
+
+        prodInOutService.saveFormData(prodInOutFormDTO);
+    }
+    @Test
+    public void testgetFormData(){
+        System.out.println(prodInOutService.getFormData(new Long(20)));
+    }
+
+    @Test
+    public void testDelete(){
+        prodInOutService.delete(new Long(20));
+
+    }
+
+    @Test
+    public void testAudit(){
+        ProdInOutFormDTO prodInOutFormDTO = new ProdInOutFormDTO();
+        ProdInOutDTO prodInOutDTO = new ProdInOutDTO();
+        prodInOutDTO.setId(new Long(22));
+        prodInOutDTO.setPi_inoutno("test01");
+        prodInOutDTO.setPi_class("采购验收单");
+        prodInOutFormDTO.setMain(prodInOutDTO);
+        prodInOutService.audit(prodInOutFormDTO);
+    }
+
+
+
+
+
+
+}