diff --git a/yxt-supervise-cyf/docs/databases/create_table.sql b/yxt-supervise-cyf/docs/databases/create_table.sql index 0e5eb21f..9abff38f 100644 --- a/yxt-supervise-cyf/docs/databases/create_table.sql +++ b/yxt-supervise-cyf/docs/databases/create_table.sql @@ -171,6 +171,7 @@ CREATE TABLE `material_inventory`( `inventory` double(100, 2) NULL DEFAULT NULL COMMENT '原料库存', `initialInventory` double(100, 2) NULL DEFAULT NULL COMMENT '原料初始库存', `typeSid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原料类型sid', +`price` double(100, 2) NULL DEFAULT NULL COMMENT '原料价格', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '原料库存' ROW_FORMAT = Dynamic; diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryDto.java b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryDto.java index cc59102c..779ee65a 100644 --- a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryDto.java +++ b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryDto.java @@ -23,4 +23,6 @@ public class MaterialInventoryDto implements Dto { private double initialInventory=0; //物料类型 private String typeSid; + private Double price; + private Double weight; } diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryVo.java b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryVo.java index ec22ca23..4b1ffe05 100644 --- a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryVo.java +++ b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialinventory/MaterialInventoryVo.java @@ -26,4 +26,6 @@ public class MaterialInventoryVo implements Vo { private String typeSid; //物料类名称 private String typeName; + private Double weight; + private Double price; } diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetails.java b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetails.java new file mode 100644 index 00000000..04f06410 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetails.java @@ -0,0 +1,44 @@ +package com.yxt.supervise.cyf.api.materialprocurementdetails; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @author feikefei + * @create 2023-06-02-9:17 + */ +@Data +@ApiModel(value = "原料采购明细", description = "原料采购明细") +@TableName("material_procurement_details") +public class MaterialProcurementDetails extends BaseEntity { + //供应商 + private String supplierSid; + //合同签订日期 + private String contractSigningDate; + //原油类型 + private String typeSid; + //单价 + private double price; + //重量 + private double weight; + //付款日期 + private String paymentDate; + //付款金额 + private double payment; + //付款单位 + private String payer; + //付款单位开户行 + private String payerBank; + //收款单位 + private String payee; + //收款单位开户行 + private String payeeBank; + //摘要 + private String paymentSummary; + private String orderNumber; + //区分1原油 2包装物 3原料 + private String type; + private String arrivalDate; +} diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsDto.java b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsDto.java new file mode 100644 index 00000000..031e54d3 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsDto.java @@ -0,0 +1,54 @@ +package com.yxt.supervise.cyf.api.materialprocurementdetails; + +import com.yxt.common.core.dto.Dto; +import com.yxt.supervise.cyf.api.crudeoiltypeinformation.CrudeOilTypeInformationDto; +import com.yxt.supervise.cyf.api.materialinventory.MaterialInventoryDto; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +/** + * @author feikefei + * @create 2023-06-02-9:20 + */ +@Data +@ApiModel(value = "原料采购明细 数据传输对象", description = "原料采购明细 数据传输对象") +public class MaterialProcurementDetailsDto implements Dto { + private String id; + private String sid; + + //供应商 + private String supplierSid; + //合同签订日期 + private String contractSigningDate; + //原油类型 + private String typeSid; + //单价 + private double price; + //重量 + private double weight; + //付款日期 + private String paymentDate; + //付款金额 + private double payment; + //付款单位 + private String payer; + //付款单位开户行 + private String payerBank; + //收款单位 + private String payee; + //收款单位开户行 + private String payeeBank; + //摘要 + private String paymentSummary; + //订单状态 + private String state; + //订单编号 + private String orderNumber; + // + private String type; + //到货日期 + private String arrivalDate; + private List commodityList; +} diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsQuery.java b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsQuery.java new file mode 100644 index 00000000..3051c281 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsQuery.java @@ -0,0 +1,45 @@ +package com.yxt.supervise.cyf.api.materialprocurementdetails; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @author feikefei + * @create 2023-06-02-9:21 + */ +@Data +@ApiModel(value = "原料采购明细 查询条件", description = "原料采购明细 查询条件") +public class MaterialProcurementDetailsQuery implements Query { + private String id; + private String sid; + + //供应商 + private String supplierSid; + //合同签订日期 + private String contractSigningDate; + //原油类型 + private String typeSid; + //单价 + private double price; + //重量 + private double weight; + //付款日期 + private String paymentDate; + //付款金额 + private double payment; + //付款单位 + private String payer; + //付款单位开户行 + private String payerBank; + //收款单位 + private String payee; + //收款单位开户行 + private String payeeBank; + //摘要 + private String paymentSummary; + //订单状态 + private String state; + //区分1原油 2包装物 3原料 + private String type; +} diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsVo.java b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsVo.java new file mode 100644 index 00000000..80e9f5f3 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-api/src/main/java/com/yxt/supervise/cyf/api/materialprocurementdetails/MaterialProcurementDetailsVo.java @@ -0,0 +1,71 @@ +package com.yxt.supervise.cyf.api.materialprocurementdetails; + +import com.yxt.common.core.vo.Vo; +import com.yxt.supervise.cyf.api.crudeoiltypeinformation.CrudeOilTypeInformationVo; +import com.yxt.supervise.cyf.api.materialinventory.MaterialInventoryVo; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +/** + * @author feikefei + * @create 2023-06-02-9:22 + */ +@Data +@ApiModel(value = "原料采购明细 视图数据对象", description = "原料采购明细 视图数据对象") +public class MaterialProcurementDetailsVo implements Vo { + private String id; + private String sid; + + //供应商 + private String supplierSid; + //合同签订日期 + private String contractSigningDate; + //原油类型 + private String typeSid; + //单价 + private double price; + //重量 + private double weight; + //付款日期 + private String paymentDate; + //付款金额 + private double payment; + //付款单位 + private String payer; + //付款单位开户行 + private String payerBank; + //收款单位 + private String payee; + //收款单位开户行 + private String payeeBank; + //摘要 + private String paymentSummary; + //订单状态 + private String state; + //供应商名称 + private String supplierName; + //供应商编码 + private String supplierNumber; + //类型名称 + private String typeName; + //类型编码 + private String typeNumber; + //商品名称 + private String tradeName; + //商品编码 + private String productCode; + //订单编号 + private String orderNumber; + //状态value + private String stateValue; + //种类数量 + private Integer amount; + //预计到货日期 + private String arrivalDate; + //总价值 + private double totalValue; + + private List commodityList; +} diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsMapper.java b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsMapper.java new file mode 100644 index 00000000..0c668814 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsMapper.java @@ -0,0 +1,68 @@ +package com.yxt.supervise.cyf.biz.materialprocurementdetails; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.cyf.api.crudeoiltypeinformation.CrudeOilTypeInformationVo; +import com.yxt.supervise.cyf.api.materialinventory.MaterialInventory; +import com.yxt.supervise.cyf.api.materialinventory.MaterialInventoryVo; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetails; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsVo; +import com.yxt.supervise.cyf.api.procurementdetails.ProcurementDetailsVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author feikefei + * @create 2023-06-02-9:25 + */ +@Mapper +public interface MaterialProcurementDetailsMapper extends BaseMapper { + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from material_procurement_details where sid=#{sid}") + List getMaterialBySid(@Param("sid")String sid); + + @Select("SELECT\n" + + "\td.*,\n" + + "\ts.supplierNumber AS supplierNumber,\n" + + "\ts.supplierName AS supplierName,\n" + + "CASE\n" + + "\t\td.state \n" + + "\t\tWHEN 1 THEN\n" + + "\t\t'待提交' \n" + + "\t\tWHEN 2 THEN\n" + + "\t\t'经理审批' \n" + + "\t\tWHEN 3 THEN\n" + + "\t\t'监管审批' \n" + + "\t\tWHEN 4 THEN\n" + + "\t\t'银行审批' \n" + + "\t\tWHEN 5 THEN\n" + + "\t\t'财务审批' \n" + + "\t\tWHEN 6 THEN\n" + + "\t\t'待入库' \n" + + "\t\tWHEN 7 THEN\n" + + "\t\t'已完成' \n" + + "\tEND AS stateValue ,count(1) as amount,\n" + + "\tsum(d.price * d.weight) as totalValue\n" + + "FROM\n" + + "\tmaterial_procurement_details d\n" + + "\tleft JOIN supplier_information s on d.supplierSid =s.sid\n" + + "\tleft join material_inventory c on c.sid =d.typeSid \n" + + "\tleft join material_type m on m.sid =c.typeSid \n" + + "WHERE\n" + + "\td.sid=#{sid} \n" + + "GROUP BY\n" + + "\td.sid ") + MaterialProcurementDetailsVo getProBySid(@Param("sid")String sid); + + @Select("select * from material_inventory where sid=#{sid}") + MaterialInventoryVo getMaterial1BySid(@Param("sid")String sid); + + @Select("select * from material_procurement_details where sid = #{sid}") + List selectList(@Param("sid") String sid); +} diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsMapper.xml b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsMapper.xml new file mode 100644 index 00000000..04109fd8 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsMapper.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsRest.java b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsRest.java new file mode 100644 index 00000000..5b72b14c --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsRest.java @@ -0,0 +1,62 @@ +package com.yxt.supervise.cyf.biz.materialprocurementdetails; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsDto; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsQuery; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author feikefei + * @create 2023-06-02-9:23 + */ +@Api(tags = "原料采购信息") +@RestController +@RequestMapping("cyf/materialProcurement") +public class MaterialProcurementDetailsRest { + @Autowired + private MaterialProcurementDetailsService materialProcurementDetailsService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = materialProcurementDetailsService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("添加") + @PostMapping("/save") + public ResultBean save(@RequestBody MaterialProcurementDetailsDto dto){ + return materialProcurementDetailsService.save(dto); + } + + @ApiOperation("提交") + @PostMapping("/submit") + public ResultBean submit(@RequestBody MaterialProcurementDetailsDto dto){ + return materialProcurementDetailsService.submit(dto); + } + + @ApiOperation("修改") + @PostMapping("/update") + public ResultBean update(@RequestBody MaterialProcurementDetailsDto dto){ + return materialProcurementDetailsService.update(dto); + } + + @ApiOperation("删除") + @DeleteMapping("/delete/{sid}") + public ResultBean delete(@PathVariable String sid ){ + return materialProcurementDetailsService.del(sid); + } + + @ApiOperation("根据sid查询") + @GetMapping("/getMaterialProcurementBySid/{sid}") + public ResultBean getMaterialProcurementBySid(@PathVariable String sid){ + return materialProcurementDetailsService.getMaterialProcurementBySid(sid); + } +} diff --git a/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsService.java b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsService.java new file mode 100644 index 00000000..9fd79031 --- /dev/null +++ b/yxt-supervise-cyf/yxt-supervise-cyf-biz/src/main/java/com/yxt/supervise/cyf/biz/materialprocurementdetails/MaterialProcurementDetailsService.java @@ -0,0 +1,138 @@ +package com.yxt.supervise.cyf.biz.materialprocurementdetails; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.cyf.api.materialinventory.MaterialInventoryDto; +import com.yxt.supervise.cyf.api.materialinventory.MaterialInventoryVo; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetails; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsDto; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsQuery; +import com.yxt.supervise.cyf.api.materialprocurementdetails.MaterialProcurementDetailsVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author feikefei + * @create 2023-06-02-9:25 + */ +@Service +public class MaterialProcurementDetailsService extends MybatisBaseService { + + public PagerVo listPageVo(PagerQuery pq) { + MaterialProcurementDetailsQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getType())) { + qw.eq("d.supplierNumber", query.getType()); + } + if (StringUtils.isNotBlank(query.getState())) { + qw.eq("d.state", query.getState()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean save(MaterialProcurementDetailsDto dto){ + ResultBean rb = ResultBean.fireFail(); + MaterialProcurementDetails entity = new MaterialProcurementDetails(); + BeanUtil.copyProperties(dto, entity, "sid"); + if (dto.getCommodityList().size() > 1){ + for(MaterialInventoryDto pro : dto.getCommodityList()){ + entity.setTypeSid(pro.getSid()); + entity.setState(1); + entity.setType("3"); + entity.setWeight(pro.getWeight()); + entity.setPrice(pro.getPrice()); + baseMapper.insert(entity); + } + return rb.success().setMsg("新增成功"); + }else { + for(MaterialInventoryDto pro : dto.getCommodityList()){ + entity.setTypeSid(pro.getSid()); + entity.setState(1); + entity.setType("3"); + entity.setWeight(pro.getWeight()); + entity.setPrice(pro.getPrice()); + baseMapper.insert(entity); + } + return rb.success().setMsg("新增成功"); + } + } + + public ResultBean submit(MaterialProcurementDetailsDto dto){ + ResultBean rb = new ResultBean(); + List materialProcurementDetails = baseMapper.selectList(new QueryWrapper().eq("sid",dto.getSid())); + //不存在保存加提交 + if(dto.getSid().equals("")||dto.getSid().equals(null)){ + MaterialProcurementDetails entity = new MaterialProcurementDetails(); + if(dto.getCommodityList().size()>1){ + for(MaterialInventoryDto pro:dto.getCommodityList()){ + BeanUtil.copyProperties(dto, entity, "sid"); + entity.setTypeSid(pro.getTypeSid()); + entity.setState(2); + entity.setType("3"); + entity.setWeight(pro.getWeight()); + entity.setPrice(pro.getPrice()); + baseMapper.insert(entity); + } + return rb.success().setMsg("新增成功"); + } + for(MaterialInventoryDto pro : dto.getCommodityList()){ + BeanUtil.copyProperties(dto, entity, "sid"); + entity.setTypeSid(pro.getTypeSid()); + entity.setState(2); + entity.setType("3"); + entity.setWeight(pro.getWeight()); + entity.setPrice(pro.getPrice()); + baseMapper.insert(entity); + } + }else{ + //存在该状态 + for(MaterialProcurementDetails pro : materialProcurementDetails){ + pro.setState(pro.getState()+1); + baseMapper.updateById(pro); + } + } + return rb.success().setMsg("提交成功"); + } + + public ResultBean update (MaterialProcurementDetailsDto dto){ + ResultBean rb = new ResultBean(); + String dtoSid = dto.getSid(); + baseMapper.delete(new QueryWrapper().eq("sid",dtoSid)); + dto.setSid(dtoSid); + save(dto); + return rb.success().setMsg("修改成功"); + } + + public ResultBean del(String sid){ + ResultBean rb=new ResultBean(); + baseMapper.delete(new QueryWrapper().eq("sid",sid)); + return rb.success().setMsg("删除成功"); + } + + public ResultBean getMaterialProcurementBySid(String sid){ + ResultBean rb=new ResultBean(); + List RawProcurementDetails = baseMapper.getMaterialBySid(sid); + MaterialProcurementDetailsVo materialProcurementDetailsVo = baseMapper.getProBySid(sid); + List list =new ArrayList<>(); + for (MaterialProcurementDetailsVo pro : RawProcurementDetails){ + MaterialInventoryVo materialInventoryVo = baseMapper.getMaterial1BySid(pro.getTypeSid()); + materialInventoryVo.setWeight(pro.getWeight()); + materialInventoryVo.setPrice(pro.getPrice()); + list.add(materialInventoryVo); + } + materialProcurementDetailsVo.setCommodityList(list); + return rb.success().setData(materialProcurementDetailsVo); + } +}